【发布时间】:2019-07-09 15:39:10
【问题描述】:
我查询一个表,然后循环遍历它以更新另一个表。 控制台打印显示正确的数据。
不确定如何为 UPDATE 查询调试 cursor.execute。
它没有在桌子上更新。这不是权限问题。如果我在我的 SQL 工作台上运行更新命令,它工作正常。
cursor = conn.cursor()
cursor.execute("Select Account_Name FROM dsf_CS_WebAppView")
for row in cursor.fetchall():
try:
cursor.execute("Select fullpath FROM customerdesignmap WHERE
fullpath LIKE '%{}%'".format(row.Account_Name))
rows = cursor.fetchall()
print(len(cursor.fetchall()))
if len(rows) > 0:
for rowb in rows:
print(rowb.fullpath)
print(row.Account_Name)
if len(row.Account_Name) > 2:
cursor.execute("UPDATE customerdesignmap SET householdname = {}, msid = {} WHERE fullpath LIKE '{}'".format(row.Account_Name, row.UniqueProjectNumber, rowb.fullpath))
conn.commit()
except:
pass
【问题讨论】:
-
生成的SQL是什么?您可以将其作为独立查询执行吗?我会从那里开始。
-
@Rayen - 在您的
except块中使用pass,您将默默地丢弃更新语句可能抛出的任何错误。我的猜测是,您生成的动态 SQL 语法无效,可能是由于未引用的字符串值。无论如何,您都应该使用查询参数,例如,... SET householdname = ?, ...
标签: python sql sql-server pyodbc