如何修复使用python psycopg2保存二进制数据时的“无法适应错误”?
今天我在我们一个项目里遇到了这个错误,整整碰到三次。把这个问题和解决办法放到网上,以便以后参考。
impost psycopg2
con = connect(...)
def save(long_blob):
cur = con.cursor()
long_data = struct.unpack('<L', long_blob)
cur.execute('insert into blob_records( blob_data ) values (%s)', [long_data])
这个错误会出现,提示“无法适配”,是来自psycopg2的错误。
2 个回答
4
这个问题是,使用struct.unpack时,它会返回一个元组结果,即使你只解包了一个值。你需要确保从这个元组中取出第一个项目,即使它只有一个项目。否则,psycopg2在解析SQL参数时会失败,因为它试图把元组转换成字符串,这样就会出现“无法适应”的错误信息。
impost psycopg2
con = connect(...)
def save(long_blob):
cur = con.cursor()
long_data = struct.unpack('<L', long_blob)
# grab the first result of the tuple
long_data = long_data[0]
cur.execute('insert into blob_records( blob_data ) values (%s)', [long_data])