如何修复使用python psycopg2保存二进制数据时“无法适应错误”
-
23-09-2019 - |
题
我碰到这个bug今天三次跑在我们的项目之一。把问题和解决方案的在线供将来参考。
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。
解决方案
问题是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])
不隶属于 StackOverflow