使用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
的{{1}}参数。例如:
load
我认为这是在不进行数据库调用甚至不将对象绑定到会话的情况下盲目实例化对象的方法,但这不是事实。即使将此参数设置为true,棉花糖-sqlalchemy仍会进行数据库调用。