sql - 如何使用烧瓶更新 SQL Server 中的 varbinary(max) 列?
问题描述
我有一张City
桌子:
name | id | pic
-----+----+-----
A | 1 | null
B | 2 | null
C | 3 | null
D | 4 | null
我想更新pic
此表中id
2 所在的列。我该怎么做?
我的代码是:
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()
但它不起作用。
解决方案
您的更新语法已关闭。使用这个版本:
file = request.files['file']
saveFileToDB = "UPDATE City SET pic = ? WHERE id = 2"
CU.execute(saveFileToDB, (file.read(),))
CU.commit()
作为说明,我(file.read(),)
在这里使用了 , 结尾的逗号。这是为了确保 Python 将其读取为元组而不是标量变量。
推荐阅读
- mysql - Spring data jpa 是否可以为 MySQL 表添加行锁
- android - 如何在 Android(API 级别 23+)中绘制自定义 ViewGroup 并且在该 ViewGroup 之外仍然可以访问?
- python - 覆盖内置函数 input() 以使用空格键提交
- r - R:当值作为向量传递时,optim() 给出不同的结果
- javascript - 开玩笑:是否可以自动模拟导入的函数?
- laravel - Forgot Password 的 Laravel Jetstream Livewire 视图正在使用应用程序布局而不是访客布局
- javascript - Blazor WASM 中的 Chrome 推送通知出现“此站点已在后台更新”问题
- raspberry-pi - 如何使用 Gstreamer 将实时音频和视频混合到 mpegts?
- javascript - 使用ajax请求从数据库实体框架中删除记录
- java - 如何从圆形图像视图中删除空白区域?