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 服务器支持 UPDATEJOIN 跨多个表。这避免了 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()