PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

TypeError:psycopg2.extensions.Binary kann nicht in Binär umgewandelt werden

Umwandeln der Bytes aus der Datei in psycopg2.Binary ist unnötig. Dies geschieht automatisch, wenn SQLAlchemy die Anweisung und die Werte an die Datenbank sendet (unter Verwendung des DBAPI-Connectors, der in diesem Fall psycopg2 wäre).

So etwas wie

with open(fn, 'rb') as f:
    bytes_ = f.read()
    instance = MyModel(document1=bytes_)
    session.add(instance)
    session.commit() 

funktioniert sowohl in Python2 als auch in Python3, SQLAlchemy 1.3.x, und generiert diese Ausgabe von der Engine:

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>}