【发布时间】:2016-06-01 14:38:44
【问题描述】:
下面是我的数据框的一个小样本
In [121]: df
Out[121]:
TXN_KEY SEND_AGENT PAY_AGENT
0 13273870 ANO080012 API352676
1 13274676 AUK359401 API352676
2 13274871 ACL000105 API352676
3 13275398 AED420319 API352676
4 13278566 ARA030210 API352676
5 13278955 AYM003098 API352676
6 13280334 AJ5020114 API352676
7 13280512 A11171047 API352676
8 13281278 AOG010045 API352676
9 13282118 AMX334165 API352676
我正在尝试使用 pyodbc 中的游标来使用数据框值更新 sql server 数据库中的表“结果”
cursor.execute("Update result set Pay_Agent = df['PAY_AGENT'][0] where Send_Agent = df['SEND_AGENT'][0]")
我得到以下错误:
ProgrammingError: ('42000', "[42000] [Microsoft][SQL Server Native Client 11.0][SQL Server]Incorrect syntax near ''PAY_AGENT''. (102) (SQLExecDirectW)")
但我确保数据类型在我的更新语句中正确匹配。
In [126]: type(df['PAY_AGENT'][0])
Out[126]: str
In [127]: type(df['SEND_AGENT'][0])
Out[127]: str
感谢任何见解。
【问题讨论】:
-
使用参数将
df值传递给 SQL Server,而不是尝试将它们嵌入到更新语句中。有关详细信息,请参阅我的回答 here - 它引用了一个选择查询,但更新的步骤是相同的。 -
@Bryan 很难跟踪解决方案中用于传递给 df 的参数的确切位置。你能在我的例子中指出如何做到这一点吗?