Pyodbc光标循环数据帧并在sq中插入

2024-05-02 07:20:09 发布

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

下面是我的SQL表和数据帧:

    TXN_KEY SEND_AGENT  Pay_Agent
13273870    ANO080012   NULL
13274676    AUK359401   NULL
13274871    ACL000105   NULL
13275398    AED420319   NULL
13278566    ARA030210   NULL
13278955    AYM003098   NULL
13280334    AJ5020114   NULL
13280512    A11171047   NULL
13281278    AOG010045   NULL
13282118    AMX334165   NULL

In [212]: df
Out[212]:
TXN_KEY SEND_AGENT  PAY_AGENT
13273870  ANO080012  API352676
13274676  AUK359401  AED002782
13274871  ACL000105  ACB020203
13275398  AED420319  ASE094882
13278566  ARA030210  AII071196
13278955  AYM003098  AHX012817
13280334  AJ5020114  AED000438
13280512  A11171047  AEL051943
13281278  AOG010045  ADJ031448
13282118  AMX334165  APM033226

下面的cursor语句正在sql server中添加Pay_Agent的第一个值

^{pr2}$

如何在for循环中编写这个cursor语句来遍历整个数据帧并将值传递到sqlserver。在


Tags: 数据keysendnullpayagenttxnacl000105
2条回答

我建议用不同的方式来做:

df另存为SQL Server表(例如:tmp_result

df.to_sql('tmp_result', conn, if_exists='replace')

然后按如下方式更新表:

^{pr2}$

这样你就可以实现你的目标,而不是循环

下面是遍历数据帧的方法:

     for index,rows in df.iterrows():
      cursor.execute("""update result SET Pay_Agent = ? WHERE SEND_AGENT = ?""",df['PAY_AGENT'][rownum],df['SEND_AGENT'][rownum])
     rownum+=1

我相信这将有助于其他人实现同样的目标。在

相关问题 更多 >