使用 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()
我正在尝试用 pymssql
.
但是我收到这个错误:
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()