PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

TypeError:impossibile sfuggire a psycopg2.extensions. Da binario a binario

Casting dei byte dal file a psycopg2.Binary non è necessario. Avverrà automaticamente quando SQLAlchemy invia l'istruzione e i valori al database (utilizzando il connettore DBAPI, che in questo caso sarebbe psycopg2).

Qualcosa come

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

funziona sia in Python2 che in Python3, SQLAlchemy 1.3.x, generando questo output dal motore:

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