[英]SQLAlchemy Commit Changes
在声明性库的内部,我定义了一个像这样的函数:
def update_me(self):
if self.raw_info==1: self.changed_info=10
else: self.changed_info=20
我知道可以使用hybrid_property完成此操作,但实际上我进行了更复杂的操作,以上仅出于说明目的,必须通过一种方法来完成。 如何在声明式库内部提交这些更改,而不将会话对象传递给它? 似乎有一种逻辑,如果我可以访问该对象并在没有会话对象的情况下更改其值,那么似乎可以以某种方式将其保存在这里。 当然将此代码添加到上述函数的末尾会失败
self.commit()
在我看来,您可能需要重新考虑您的设计。 但是,如果确定要采用这种方式,则可以使用object_session
方法:
object_session(self).commit()
警告:这将提交整个会话(而不仅仅是一个对象),并且仅当self
已附加到会话(例如,通过Session.add
或已查询该会话)时才起作用。 因此,这将是一项脆弱的操作,除非绝对必要,否则我不建议您这样做。
但是你说的对
似乎有一种逻辑,如果我可以访问该对象并在没有会话对象的情况下更改其值,那么似乎可以以某种方式将其保存在这里。
对象和会话已连接,因此更改将被传递到数据库。 我们通过上面的方法获得了这个连接的会话。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.