sqlalchemy分配属性提交更改

时间:2019-03-01 09:10:23

标签: python sqlalchemy

我发现随着我的sql表变得非常大(200万行),此代码成为了瓶颈。

def somefunc():
    for row in df.iterrows():
        updates = session.query(User).filter(User.id == id)

        try:
            somefunc()

            for update in updates:
                update.flag = 1

        except:
            for update in updates:
                update.flag = 0

    session.commit()

问题1 :我已经在木星笔记本中进行了测试,看起来就像在属性分配时提交了事务一样

for update in updates:
    update.flag = 1

当我期望事务刷新到session.commit()上的数据库时,为什么会这样?这导致sql在循环的每次迭代中执行查询,这是致命的。

问题2 :如何防止等到sql执行查询。我尝试了session.flush(),但没有帮助。如果那最终不会破坏会话或数据库,并且查询是否要由mysql执行?

0 个答案:

没有答案