因此,使用和学习 sqlalchemy。
我有一个实例,我需要获取一个值。如果该值存在,则返回它。 如果不计算返回。
总是有人会说“你做错了”,并且对改进的意见通常会受到赞赏。 但是,我正在研究如何在不显式管理 session 的情况下执行此操作,因为我正在做的工作开始增长,并且在我想更新实例时不断管理 session 是有问题的。这让我觉得我实际上做错了。
那么我该如何修复下面的方法而不是明确地管理 session 呢?
def method(self, session):
if self.i_needed_this is None:
self.i_needed_this = calculate(calcutron)
session.add(self)
session.commit()
return self.i_needed_this
else:
return self.i_needed_this
也许这个问题的标题应该是“让实例 session 感知,所以我并不总是明确地管理它”,如果这是一个愚蠢的问题,至少用例子告诉我为什么,并指出其他人问得更好的地方。
编辑:显然,导入我正在使用的 session 是有效的,而且它是可用的,所以当我更熟练使用 sqlalchemy 时,它可能不是问题或 future 的问题。
最佳答案
您的问题很常见,答案在 Session Frequently Asked Questions 中SA 文档:
- 如何获得特定对象的 session ?
使用 object_session() session 中可用的类方法:
session = Session.object_session(someobject)
但是,它假设对象是持久的并且是新的(但已经添加到 session 中)或绑定(bind)到 session 。您的示例代码包含将对象添加到 session 的逻辑,因此在这种情况下我的假设可能不成立。
关于python - 模型和实例方法 : session aware (sqlalchemy),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10882980/