python - 使用python psycopg2保存二进制数据时如何修复 "can' t adapt error

标签 python postgresql psycopg2 unpack iterable-unpacking

我今天在我们的一个项目中三次遇到这个错误。将问题和解决方案放在网上以供将来引用。

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/

相关文章:

postgresql - Osmosis 抛出奇怪的 Java 错误

javascript - 为 Postgresql tswtz 数据类型生成带有时区的服务器端时间戳

database - postgres/pl sql generate string 创建额外的双引号

python - 按当前时间查询(postgres、psycopg2、python)

python - 在本地主机上找不到图像

python - Pandas - 水平统一数据框,将行变成列

python - Wget 和 Python 下载管理器?

python - 使用 unnest 更新多个 postgresql 记录

python - 如何解决在manage.py上运行sudo导致连接PSQL失败的问题?

python - virtualenv python中的sys.path