Casting byte dari file ke psycopg2.Binary
tidak perlu. Itu akan terjadi secara otomatis ketika SQLAlchemy mengirim pernyataan dan nilai ke database (menggunakan konektor DBAPI, yang akan menjadi psycopg2 dalam kasus ini).
Sesuatu seperti
with open(fn, 'rb') as f:
bytes_ = f.read()
instance = MyModel(document1=bytes_)
session.add(instance)
session.commit()
bekerja di Python2 dan Python3, SQLAlchemy 1.3.x, menghasilkan output ini dari mesin:
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>}