在SQLServer表中,我想將colB中的值更新爲transformColumn(colA),其中transformColumn是一個我不想轉換爲SQL的python函數。 我嘗試下面的代碼,但顯然我不能以這種方式在同一時間查詢和更新:在pyodbc中更新一列作爲另一個Python函數
Error: ('HY000', '[HY000] [Microsoft][ODBC SQL Server Driver]Connection is busy with results for another hstmt (0) (SQLExecDirectW)')
我如何能實現我的目標是什麼?
import pyodbc
def transformColumn(colValue):
#complicated transformation that I don't want to do in SQL here
cs = 'DRIVER={SQL Server};Server=mySvr;Database=myDB;Trusted_Connection=Yes;'
cn = pyodbc.connect(cs, autocommit=True)
sqlSelect = """
SELECT id, colA
FROM myTable
"""
sqlUpdate = """
UPDATE myTable
SET colB=? WHERE id=?
"""
csrSelect = cn.cursor()
rows = csrSelect.execute(sqlSelect)
csrUpdate = cn.cursor()
row = csrSelect.fetchone()
while row is not None:
colB = transformColumn(row.colA)
csrUpdate.execute(sqlUpdate, colB, row.id)
row = csrSelect.fetchone()
csrSelect.close()
csrUpdate.close()
cn.close()
我剛剛意識到我可以通過在不同的連接上運行更新來完成這項工作,但我想知道是否有更好的甚至根本不同的連接做法。 – Lobert