从Python更新nvarchar(max)列时出错

时间:2017-10-13 13:02:33

标签: python json python-3.x pyodbc

我正在更新Google反向地理编码的输出(采用JSON格式),

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=localhost;DATABASE=mydb;UID=test;PWD=abc@123;autocommit=True')
cursor = cnxn.cursor()
wp = urllib.request.urlopen("http://maps.googleapis.com/maps/api/geocode/json?latlng=18.5504,73.9412&sensor=false")
pw = wp.read()
#print(pw)
cursor.execute("UPDATE GEOCODE_tbl SET JSON_str = ? WHERE GEOCODE_ID = ?", pw,749904)
print('Done')
cnxn.commit()

但是它给出了错误

('22018', '[22018] [Microsoft][ODBC SQL Server Driver][SQL Server]Operand type clash: image is incompatible with nvarchar(max) (206) (SQLExecDirectW)')

那是什么错误? JSON_str列具有此类JSON输出,因此我正在为JSON_str列为NULL的列执行任务。

有人对此有任何想法吗?

1 个答案:

答案 0 :(得分:1)

pw不属于str类型。尝试将您的查询转换为:

cursor.execute("UPDATE GEOCODE_tbl SET JSON_str = ? WHERE GEOCODE_ID = ?", (str(pw), 749904))
祝你好运!