我查询一个表,然后遍历该表以更新另一个表。 控制台的Prints显示正确的数据。
不确定如何调试UPDATE查询的cursor.execute
。
它不在桌上更新。这不是权限问题。如果我在SQL工作台上运行update命令,它将正常工作。
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
答案 0 :(得分:2)
请考虑一个纯SQL解决方案,因为SQL Server在多个表中支持UPDATE
和JOIN
。这样可以避免嵌套循环,游标调用和SQL命令的字符串格式。
UPDATE m
SET m.householdname = v.Account_Name,
m.msid = v.UniqueProjectNumber
FROM customerdesignmap m
JOIN dsf_CS_WebAppView v
ON m.fullpath LIKE CONCAT('%', v.Account_Name, '%')
在Python中,通过cursor.execute()
调用在单个commit()
中运行。
cursor.execute('''my SQL Query''')
conn.commit()