TypeError:无法将psycopg2.extensions.Binary转义为二进制

时间:2015-05-14 19:09:17

标签: python postgresql flask sqlalchemy psycopg2

我尝试通过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())

1 个答案:

答案 0 :(得分:0)

从文件const SingleCard = (props) => {....}中投射字节是问题所在。通常,SQLAlchemy会自动从Python类型转换为数据库类型。

类似

props.match.path

在Python2和Python3 SQLAlchemy 1.3.x中均可使用,并从引擎生成以下输出:

psycopg2.Binary