为什么在使用SQLAlchemy的UPDATE函数时出现错误?



我有以下代码:

SQLQuery="UPDATE Players SET [Player Name] = REPLACE(REPLACE([Player Name], 'Christian', 'Chris') , 'Reece', 'John')"  
df = pd.read_sql(SQLQuery, sqlcon)
然而,当我运行代码时,我得到以下错误:
ResourceClosedError: This result object does not return rows. It has been closed automatically.

我在SSMS中运行了相同的SQL代码,它工作得很好。为什么会发生这种情况?

您应该只执行查询,而不是尝试将结果读入数据框,因为没有UPDATE查询的结果。

SQLQuery="UPDATE Players SET [Player Name] = REPLACE(REPLACE([Player Name], 'Christian', 'Chris') , 'Reece', 'John')"  
sqlcon.execute(SQLQuery)

Read_sql意味着从SQL数据库中检索数据,你的查询正在尝试在数据库中进行更新。

对于一个简单的更新,您可以使用SQLAlchemy execute,从文档中可以看到语法如下:

from sqlalchemy import text
with engine.connect() as connection:
result = connection.execute(text("select username from users"))
for row in result:
print("username:", row['username'])

如果你使用ORM等,还有其他可能的语法和样式。

最新更新