使用 pymssql 和 python 字典更新数据库 table 时出错

Error when updating a database table with pymssql and a python dictionary

我正在尝试用 pymssql.

将字典中的数据写回 SQL 服务器数据库 table

但是我收到这个错误:

ValueError: more placeholders in sql than params available

这是我的代码:

cursor = conn.cursor()
for key in dictW:
    x = dictW[key]
    sql = 'UPDATE tablename SET col = %s WHERE %s = @url '
    cursor.executemany(sql, (key, x))
conn.commit()
conn.close()

我做错了什么?

您正在尝试一项一项地执行您的查询,但正在使用 executemany()。您应该考虑使用简单的 execute() 代替:

cursor = conn.cursor()
for key in dictW:
    x = dictW[key]
    sql = 'UPDATE tablename SET col = %s WHERE %s = @url '
    cursor.execute(sql, (key, x))
conn.commit()
conn.close()

如果你想使用 executemany(),你应该像这样制作一个元组列表:

cursor = conn.cursor()
params = [(k, v) for k, v in dictW.items()]
sql = 'UPDATE tablename SET col = %s WHERE %s = @url '
cursor.executemany(sql, params)
conn.commit()
conn.close()