“如何修复”;can';t适应错误“;使用python psycopg2保存二进制数据时
今天在我们的一个项目中,我三次碰到这个bug。将问题和解决方案联机以供将来参考“如何修复”;can';t适应错误“;使用python psycopg2保存二进制数据时,python,postgresql,psycopg2,unpack,iterable-unpacking,Python,Postgresql,Psycopg2,Unpack,Iterable Unpacking,今天在我们的一个项目中,我三次碰到这个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_
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])
import psycopg2
con=连接(…)
def保存(长\u blob):
cur=con.cursor()
long_data=struct.unpack(“问题是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])
import psycopg2
con=连接(…)
def保存(长\u blob):
cur=con.cursor()
当psycopg不知道您的long\u blob
变量的类型时,将引发long\u data=struct.unpack(“”无法调整)。它是什么类型的
您可以轻松地告诉psycopg如何转换数据库的值
因为它是一个数值,适配器可能已经可以为您工作了。在本例中,我的类型是一个二进制字符串,但包含在struct.unpack返回的元组中。类似('0x001122')的内容而不是“0x001122”本身。我想我们可以制作一个元组提取器,但现在这只是记录我们的错误。谢谢你的回答。