Прехвърляне на байтовете от файла към 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>}