При использовании метода ModelSchema.load
объект будет взаимодействовать с базой данных.
Например, когда выполняется следующее:
author = Author(name="Chuck Paluhniuk")
author_schema = AuthorSchema()
book = Book(title="Fight Club", author=author)
session.add(author)
session.add(book)
session.commit()
dump_data = author_schema.dump(author).data
print(dump_data)
# {'books': [123], 'id': 321, 'name': 'Chuck Paluhniuk'}
load_data = author_schema.load(dump_data, session=session)
Приведенный выше код вызовет marshmallow-sqlalchemyсвязаться с базой данных.Я хочу избежать любого взаимодействия с базой данных при использовании load
.Я хочу сам управлять объектом, добавляя его в сеанс, если я захочу, и оставляя его снаружи, если нет.
Я попытался аргумент transient=True
для load
.Например:
load_data = author_schema.load(dump_data, session=session, transient=True)
Я думал, что это предполагалось для слепого создания экземпляра объекта без выполнения вызовов базы данных или даже привязки объекта к сеансу, но это не так.Marshmallow-sqlalchemy по-прежнему выполняет вызовы базы данных, даже если для этого аргумента установлено значение true.