下面是我的SQL TABLE和DATAFRAME:
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
下面的游标语句是在sql server中添加Pay_Agent的第一个值就好了
cursor.execute("""update result SET Pay_Agent = ? WHERE SEND_AGENT = ?""",df['PAY_AGENT'][0],df['SEND_AGENT'][0])
13273870 ANO080012 API352676
13274676 AUK359401 NULL
13274871 ACL000105 NULL
13275398 AED420319 NULL
-------
如何在for循环中编码此游标语句以迭代整个数据帧并将值发布到SQL服务器。
答案 0 :(得分:2)
我建议采用不同的方式:
将df
保存为SQL Server表(让我们说:tmp_result
)
df.to_sql('tmp_result', conn, if_exists='replace')
然后按如下方式更新您的表:
update result
set result.Pay_Agent = tmp_result.Pay_Agent
FROM result
INNER JOIN tmp_result
on result.SEND_AGENT = tmp_result.SEND_AGENT;
这样您就可以在不循环的情况下实现目标
答案 1 :(得分:0)
以下是循环数据框的方法:
$curl = curl_init( 'https://ipnpb.paypal.com/cgi-bin/webscr' );
curl_setopt( $curl, CURLOPT_RETURNTRANSFER, true );
curl_setopt( $curl, CURLOPT_POST, true );
curl_setopt( $curl, CURLOPT_POSTFIELDS, $req );
$response = curl_exec( $curl );
if( 'VERIFIED' == trim( $response ) ) {
// IPN verified by PayPal
}
我相信这会帮助其他人尝试实现同样目标。