我想查詢一個Microsoft SQL 2005數據庫,處理數據並將密鑰寫入我更新到本地計算機上的sqllite3數據庫存儲的數據。無法使用python從mssql插入到sqlite3的二進制數據
我使用的工具是python 2.7,pyodbc和sqllite3。我在Windows 7和我嘗試連接到我的mssql數據庫使用SQL Server和SQL本地客戶端驅動程序與pyodbc和驅動程序都產生相同的結果。
我遇到的問題是在mssql中是二進制(16)的uuid字段。當我使用pyodbc查詢數據時,它會以bytearray()的形式返回給我。
這是我運行以下命令時得到的輸出。
id = mycursor.fetchone()
print id
AO÷EAO <1ÝWt'E
repr(id)
字節組(B '\ xe0O \ XF7 \ X1D \ x9de \ xc5O \ x8b1 \ x0e \ xddWt \ x91E')
當我去插入該Id到sqllite3數據庫時,我得到以下內容。
s = sqlite3.connect('tmp.db')
cursor = s.cursor()
s.execute("create table recs(uuid blob)")
s.commit()
s.execute("insert into recs (uuid) values(?)", id)
1 s.execute( 「插入到倫理委員會(UUID)的值()?」,ID)
ProgrammingError:提供綁定的不正確的數。當前語句使用1,並提供了16個。
我把它送回去,那作品!我錯過了括號內的括號。非常感謝 ! – Josh 2012-08-06 19:52:46
MRAB我做了一些研究,我得到了爲什麼現在需要緩衝區,但仍然不清楚爲什麼它需要在一個元組中。 – Josh 2012-08-08 02:45:45
'execute'方法需要佔位符的值位於元組中。只是在這種情況下有1個佔位符,所以它需要1元組的值。 – MRAB 2012-08-08 16:40:21