我目前正在尝试使用声明性方法创建 sqlalchemy 对象,这些对象是“临时”对象,并不是要持久化而是简单地比较。
因此,我想在当前会话“之外”创建它们。问题是如果我不一一删除它们,会话会尝试刷新它们,从而产生外键错误(这是正常的,因为对象不完整)。
我一直在使用 sqlalchemy.ext.declarative 中的“declarative_base”来创建一个基类,然后从它继承来创建我的模型对象。例如(伪代码):
class BaseEntity(object):
... common columns ...
Base = declarative_base(cls=BaseEntity)
class MyObject(Base):
... other columns ..
现在每当我这样做:
tmpobj = MyObject()
我需要做(会话对象是在另一个模块中声明的 scoped_session)
session.expunge(tmpobj)
考虑到我的 tmp 对象的创建方式复杂(并相互嵌套),这确实很麻烦。
是否有任何特殊参数可以传递给 MyObject() 构造函数以防止将对象添加到会话中?