python - 模型和实例方法 : session aware (sqlalchemy)

标签 python sqlalchemy

因此,使用和学习 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/

相关文章:

python - 将屏幕输出写入文件

python - SqlAlchemy 在保存前将 UTC DateTime 转换为本地时间

python - SQL:如何将两列 GROUP BY 作为无序对?

sqlalchemy - PyCharm 无法识别没有冗余 __init__ 的 SqlAlchemy 声明性子类签名

python "del"语句删除多个字典

python - 在Python中从3D顶点列表构造多边形

python - 如何以推荐的 Pythonic 方式在 Python for 循环中使用 2 个变量?

python - SQLAlchemy 引发 None,导致 TypeError

postgresql - sqlalchemy.exc.OperationalError : (psycopg2. OperationalError)fe_sendauth:未提供密码

python - 在没有类实例的情况下访问类级别成员