首页 > 解决方案 > 如何使用烧瓶更新 SQL Server 中的 varbinary(max) 列?

问题描述

我有一张City桌子:

name | id | pic
-----+----+-----
A    | 1  | null
B    | 2  | null
C    | 3  | null
D    | 4  | null

我想更新pic此表中id2 所在的列。我该怎么做?

我的代码是:

file = request.files['file']
saveFileToDB = "UPDATE [Db2].[dbo].[City] SET (pic) VALUES (?) WHERE id = 2"
CU.execute(saveFileToDB, (file.read()))
CU.commit()

错误信息:

pyodbc.ProgrammingError: ('42000', "[42000] [Microsoft][ODBC SQL Server Driver][SQL Server]'(' 附近的语法不正确。(102) (SQLExecDirectW); [42000] [Microsoft][ODBC SQL Server驱动程序][SQL Server]无法准备语句。(8180)"

或者:

saveFileToDB = "UPDATE [Db2].[dbo].[City] SET pic = Convert(Varbinary(max),'%s') WHERE id = 2"%file.read()

但它不起作用。

标签: sqlsql-serverflaskpyodbcinsert-update

解决方案


您的更新语法已关闭。使用这个版本:

file = request.files['file']

saveFileToDB = "UPDATE City SET pic = ? WHERE id = 2"
CU.execute(saveFileToDB, (file.read(),))
CU.commit()

作为说明,我(file.read(),)在这里使用了 , 结尾的逗号。这是为了确保 Python 将其读取为元组而不是标量变量。


推荐阅读