簡體   English   中英

無法通過Pyodbc將圖像上傳到MS Sql服務器

[英]Can't upload Images to MS Sql server via pyodbc

我正在嘗試使用python語言將圖像上傳到Linux(raspbian)環境中的MS SQL Web服務器。 到目前為止,我已經能夠連接到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] Satement無法准備。(8180)(SQLParamData)')

有人能幫助我嗎。 謝謝

您的參數必須作為一個序列傳遞,而不是作為兩個單獨的參數傳遞。 一個元組在這里會做的很好:

cursor.execute(
    "insert into Database1([image name], image) values (?,?)",
    ('new1', pyodbc.Binary(bindata)))

注意,您還需要正確引用image name列,並將數據包裝在pyodbc.Binary()對象中; 這將為您的Python版本生成正確的數據類型( bytearraybytes )。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM