pyodbc 未更新 table
pyodbc not updating table
我查询了一个 table,然后遍历它以更新另一个 table。
控制台打印显示正确的数据。
不确定如何为 UPDATE 查询调试 cursor.execute
。
它没有在 table 上更新。这不是权限问题。如果我 运行 在我的 SQL workbench 上更新命令它工作正常。
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 解决方案,因为 SQL 服务器支持 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()
我查询了一个 table,然后遍历它以更新另一个 table。 控制台打印显示正确的数据。
不确定如何为 UPDATE 查询调试 cursor.execute
。
它没有在 table 上更新。这不是权限问题。如果我 运行 在我的 SQL workbench 上更新命令它工作正常。
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 解决方案,因为 SQL 服务器支持 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()