Зефир SQLAlchemy загрузить без взаимодействия с базой данных - PullRequest
0 голосов
/ 15 мая 2019

При использовании метода 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.

...