如何向包含where claus的pythonsql insert语句传递多个参数

2024-09-27 07:18:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将信息从python数据帧传递到python for循环中,以更新microsoftsqlserver中的行,从而更新表

我有一个熊猫数据帧值

row['id']

哪个应该等于我的SQL update语句中的where子句

where id = ?

我的full语句不传递where子句的参数,也不从值中排除最后一个参数,但在包含它时就不行了

这是我的完整代码,不包括日期:

df = DataFrame.from_records(data)

for index,row in df.iterrows():
    cursor.execute("UPDATE dbo.tickets SET ([updated_at],[type],[status],[group_id],[assignee_id]) 
    values(?,?,?,?,?) where id = ?", (row['updated_at'],row['type'],row['status'],row['group_id'],row['assignee_id'],row['id']))
    cursor.commit()

但是我在执行代码时收到了这个错误:

[1241 rows x 36 columns] Traceback (most recent call last): File "solved.py", line 54, in cursor.execute("UPDATE dbo.tickets ([updated_at],[type],[status],[group_id],[assignee_id]) values(?,?,?,?,?) where id = ?", (row['updated_at'],row['type'],row['status'],row['group_id'],row['assignee_id'],row['id'])) pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Incorrect syntax near '('. (102) (SQLExecDirectW); [42000] [Microsoft][ODBC Driver 17 for SQL Server][SQL Server]Statement(s) could not be prepared. (8180)")

有人能解释一下我可能做错了什么吗?谢谢你

更新:

实际上,我插入了错误的更新命令,并用以下方法解决了此问题:

cursor.execute("UPDATE dbo.tickets SET [updated_at] = ?,[type] = ?,[status] = ?,[group_id] = ?,[assignee_id] = ? where [id] = (?)", (row['updated_at'],row['type'],row['status'],row['group_id'],row['assignee_id'],row['id']))

Tags: idforexecutesqlservertypestatusgroup

热门问题