繁体   English   中英

SQLAlchemy提交更改

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM