Я просто хочу загрузить файл (.pdf, .doc, .csv, .dat, ...) в базу данных.
Столбец определяется как Большой двоичный файл,
даже пробуя это с base64, как в вопросе:
Вставка и получение PDF-файлов в mySQL BLOB с использованием python
не работал.
from sqlalchemy import create_engine, Column, Integer, LargeBinary
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()
engine = create_engine('mysql+pymysql://xxx:pw@localhost/demo_db')
# Base.metadata.create_all(engine)
class DocFile(Base):
__tablename__ = 'doc_file'
id = Column(Integer, primary_key=True)
data = Column(LargeBinary)
session = sessionmaker(bind=engine)()
df = DocFile()
with open('test_file.pdf', 'rb') as f:
blob = f.read()
df.data = blob
session.add(df)
session.commit()
ErrorMessage:
sqlalchemy.exc.DataError: (pymysql.err.DataError) (1406, «Данные слишком длинные для столбца« данные »в строке 1») [SQL: «INSERT INTO doc_file (data) VALUES (% (data) s) '] [параметры: {'данные': b '% PDF-1.4 \ n% \ xd3 \ xeb \ xe9 \ xe1 \ n1 0 obj \ n <> \ nstartxref \ n157069 \ n %% EOF'}] (фон этой ошибки в: http://sqlalche.me/e/9h9h)
'' '