Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python Can';t通过pyodbc将图像上载到MS Sql server_Python_Sql Server_Image_Upload - Fatal编程技术网

Python Can';t通过pyodbc将图像上载到MS Sql server

Python 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=

我正在尝试在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=%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。先生,还有一个问题,请帮助我