我正在尝试将由整数数组(即整数的打包数组)创建的BLOB保存在SQLite数据库中。下面显示的脚本给出了以下回溯信息。据我从Python 2.7 sqlite3文档中所看到的,应该可以将缓冲区对象插入到表中,以便将其保存为BLOB。但是,我无法使其正常工作。(顺便说一句,如果将isinstance(b,buffer)插入到脚本中,则会打印True,因此我确实正在创建缓冲区对象。)
有什么建议吗?
谢谢, -P.
Traceback (most recent call last):
File "example.py", line 13, in <module>
conn.execute( 'insert into foo values (?)', (b,) ) # <=== line 14
ValueError: could not convert BLOB to buffer
import sqlite3
import sys
import array
ar = array.array( 'I' )
ar.extend( [1,0,3,11,43] )
b = buffer( ar )
conn = sqlite3.connect( ':memory:' )
conn.execute( 'create table foo( bar BLOB )' )
conn.commit()
conn.execute( 'insert into foo values (?)', (b,) ) # <=== line 14
conn.commit()
bytes(ar)
在这种情况下是不正确的。 - Cristian Ciupitusqlite3.Binary
和调用buffer
是一样的(请查看sqlite3/dbapi2.py
的源代码)。 - Cristian Ciupitu