Truyền các byte từ tệp sang psycopg2.Binary
là không cần thiết. Nó sẽ tự động xảy ra khi SQLAlchemy gửi câu lệnh và giá trị đến cơ sở dữ liệu (sử dụng trình kết nối DBAPI, trong trường hợp này sẽ là psycopg2).
Một cái gì đó giống như
with open(fn, 'rb') as f:
bytes_ = f.read()
instance = MyModel(document1=bytes_)
session.add(instance)
session.commit()
hoạt động trong cả Python2 và Python3, SQLAlchemy 1.3.x, tạo ra kết quả này từ công cụ:
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>}