我今天在我们的一个项目中三次遇到这个错误。将问题和解决方案放在网上以供将来引用。
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])
关于python - 使用python psycopg2保存二进制数据时如何修复 "can' t adapt error,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2149515/