无法通过 pyodbc 上传图片到 MS Sql server
我正在尝试在Linux(Raspbian)环境下使用Python语言将一张图片上传到MS SQL网络服务器。目前我已经成功连接到MS SQL,并且创建了一个表。我使用的是pyodbc库。
#! /user/bin/env python
import pyodbc
dsn = 'nicedcn'
user = myid
password = mypass
database = myDB
con_string = 'DSN=%s;UID=%s;PWD=%s;DATABASE=%s;' % (dsn, user, password, database)
cnxn = pyodbc.connect(con_string)
cursor = cnxn.cursor()
string = "CREATE TABLE Database1([image name] varchar(20), [image] varbinary(max))"
cursor.execute(string)
cnxn.commit()
这一部分没有出现任何错误。这是不是意味着我成功创建了一个表?还是说还有其他问题?
我尝试用这种方式上传图片。
with open('new1.jpg','rb') as f:
bindata = f.read()
cursor.execute("insert into Database1(image name, image) values (?,?)", 'new1', bindata)
cnxn.commit()
在这一部分我遇到了错误,错误信息是pyodbc.ProgrammingError: ('42000', '[42000] [FreeTDS] [SQL Server] 语句无法准备。 (8180) (SQLParamData)')
有人能帮帮我吗?谢谢!
1 个回答
1
你的参数必须作为一个序列传入,而不是分成两个单独的参数。这里可以使用一个元组来实现:
cursor.execute(
"insert into Database1([image name], image) values (?,?)",
('new1', pyodbc.Binary(bindata)))
注意,你还需要正确地引用image name
这一列,并将数据包裹在pyodbc.Binary()
对象中;这样做会生成适合你Python版本的数据类型(bytearray
或bytes
)。