Python Can';t通过pyodbc将图像上载到MS Sql server
我正在尝试在Linux(raspbian)环境中使用python语言将图像上载到MS SQL web server。到目前为止,我已经能够连接到MS Sql,并且我已经创建了一个表。我正在使用pyodbcPython Can';t通过pyodbc将图像上载到MS Sql server,python,sql-server,image,upload,Python,Sql Server,Image,Upload,我正在尝试在Linux(raspbian)环境中使用python语言将图像上载到MS SQL web server。到目前为止,我已经能够连接到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=
#! /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)'
谁能帮我一下吗。谢谢您的参数必须作为一个序列传递,而不是作为两个单独的参数传递。在这里,一个元组会很好:
cursor.execute(
"insert into Database1([image name], image) values (?,?)",
('new1', pyodbc.Binary(bindata)))
请注意,您还需要正确引用
image name
列,并将数据包装在pyodbc.Binary()对象中;这将为您的Python版本生成正确的数据类型(bytearray
或bytes
)。谢谢您的帮助,但我仍然得到了相同的结果error@Kevin777:啊,是的,你的图像名称
栏也需要引用。谢谢你的帮助。我认为这是可行的,但我还是会出错。它显示pyodbc.ProgrammingError:('22018','22018][FreeTDS][SQL Server]操作数类型冲突:文本与varbinary(max)(206)(SQLParamData)不兼容)。。。是否需要将图像Colum数据类型更改为图像或blob?我可以将图像作为jpg直接上传到数据库中吗???@Kevin777:对,您需要使用pyodbc.Binary()
object。先生,还有一个问题,请帮助我