SQL炼金术未按预期更新

2024-09-30 14:28:07 发布

您现在位置:Python中文网/ 问答频道 /正文

这个SQLAlchemy 0.9.7代码执行时没有错误,但没有按预期更新底层数据库。在

这是Python:

    print t        #prints TITLE ABSTRACTOR 1
    print newtitle #prints TITLE ABSTRACTOR I
    print session.query(Basic).filter(Basic.title==t).count() #prints 1
    ret = update(Basic).where(Basic.title==t).values(title=newtitle)
    session.commit()

以下是更新后数据库的外观:

^{pr2}$

我是否遇到了SQL炼金术错误,或者我遗漏了什么?在


Tags: 数据库basicsqlalchemytitlesession错误filterquery
1条回答
网友
1楼 · 发布于 2024-09-30 14:28:07

你只是在构造一个update语句:

ret = update(Basic).where(Basic.title==t).values(title=newtitle)

如果不执行以下语句,则不会执行任何操作:

^{pr2}$

但我认为你是在尝试使用ORM接口,而不是核心接口。在这种情况下,虽然我不记得细节,但我确信您是通过修改查询对象来实现的,而不是通过调用任何名为update的对象来实现的。如果这就是你要找的,希望在这方面比较新鲜的人会提供更好的答案,但是类似这样的情况:

ret = session.query(Basic).filter(Basic.title==t)
ret.title = newtitle

如果这对您没有意义,请参阅教程中的Executing。但我猜你知道这一点,它只是我们制造的那些愚蠢的错误中的一个,我们都很难在别人的代码中看到它,而在我们自己的代码中,这个错误要糟糕100倍。:)

相关问题 更多 >