Flask -marshmallow схема загружает преобразование двоичного файла в строку и не удалось сохранить в конце - PullRequest
0 голосов
/ 27 февраля 2020

У меня странная ситуация, у меня есть ответ dict / json, который я хочу загрузить в схему модели и сохранить. но странно, что не удалось сохранить данные с ошибкой -> строковый аргумент без кодировки. (хотя он закодирован)

это моя модель

class ExampleModel(db.Model):
    __tablename__ = "example_table"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String(100), nullable=False)
    content = db.Column(db.Binary)

    def save_to_db(self) -> None:
        db.session.add(self)
        db.session.commit()

это моя схема

class ExampleSchema(ma.ModelSchema):
    class Meta:
        model = ExampleModel
        load_only = ("title", "content")
        dump_only = ("id", "title", "content")

вот как я конвертирую его в двоичный файл

data = request.form.to_dict()
if 'content' in data:
    data['content'] = data['content'].encode('utf8')

это мой json резонанс или дикт перед загрузкой

data = {'content': b'content21sdfasdfasdfs sadfasdfasdf sadfasdfsf', 'title': 'title1'}

вот как я загружаю его в схему и пытаюсь сохранить.

example_schema = ExampleSchema()
loaded_data = example_schema.load(data)
loaded_data.save_to_db()

Я получаю ошибку, подобную этой, во время сохранения ...

sqlalchemy.exc.StatementError: (builtins.TypeError) string argument without an encoding [SQL: INSERT INTO ......

, когда я пытался отладить его с помощью pycharm, я заметил, что после загрузки схемы двоичное содержимое было преобразовано в строку.

Я застрял здесь, будем благодарны за помощь ...

...