sqlalchemy Загрузка файла .pdf в базу данных mysql приводит к ошибке: «Данные долго для столбца - PullRequest
0 голосов
/ 15 марта 2019

Я просто хочу загрузить файл (.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) '' '

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...