gpt4 book ai didi

python - TypeError : can't escape psycopg2. extensions.Binary to binary

转载 作者:行者123 更新时间:2023-12-03 21:38:54 31 4
gpt4 key购买 nike

我尝试通过 sqlalchemy 将二进制文件存储到 postgresql 中,并从客户端上传文件。
对错误消息的一点谷歌把我带到 this source file :“包装的对象不是字节或缓冲区,这是一个错误”

   binaries = []
for f in request.files.values():
if f and allowed_file(f.filename):
fn = secure_filename(f.filename)
file_path = os.path.join(basedir, fn)
f.save(file_path)
#data = f.read()
data = open(fn, 'rb').read()
binaries.append(psycopg2.Binary(data))
f.close()
#does the escaping
mytable=mytable(
...,
document1 = binaries[0]
...
)
#Model
class mytable(mydb.Model):
document1 = mydb.Column(mydb.LargeBinary())

最佳答案

将文件中的字节转换为 psycopg2.Binary是不必要的。它会在 SQLAlchemy 将语句和值发送到数据库时自动发生(使用 DBAPI 连接器,在本例中为 psycopg2)。
就像是

with open(fn, 'rb') as f:
bytes_ = f.read()
instance = MyModel(document1=bytes_)
session.add(instance)
session.commit()
适用于 Python2 和 Python3,SQLAlchemy 1.3.x,从引擎生成此输出:
2020-09-06 10:39:27,775 INFO sqlalchemy.engine.base.Engine INSERT INTO mytable (document1) VALUES (%(document1)s) RETURNING mytable.id
2020-09-06 10:39:27,775 INFO sqlalchemy.engine.base.Engine {'document1': <psycopg2.extensions.Binary object at 0x7f8ea012ff60>}

关于python - TypeError : can't escape psycopg2. extensions.Binary to binary,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30245395/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com