sql-alchemy从活动会话中打开会话

时间:2017-09-13 12:34:57

标签: python python-2.7 orm sqlalchemy

我是sql-alchemy的新手,并试图了解在下列情况下会发生什么:

我们假设我有以下代码:

with db.mysession() as session:
     first_obj = session.query(db.my_table).filter(db.obj.index == 1)
     second_obj = session.query(db.my_table).filter(db.obj.index == 2)
     first_obj.delete()
     # note this was not commited to the db and I'm creating a new session
     session = db.mysession()
     second_obj_2 = session.query(db.my_table).filter(db.obj.index == 2)
     second_obj_2 = "some_change"

mysession()只是打开并且sqlalchemy会话到数据库并在退出时关闭它。

  • 问题是会发生什么?被删除的对象是否实际被删除?或者不是因为会议被覆盖了?
  • 两会之间有什么不同吗?我将在此代码的末尾看到哪些更改?
  • 我没有故意关闭内部会话,未闭合的会话会发生什么?

1 个答案:

答案 0 :(得分:0)

因此,经过一番调查后,发生了什么:

我们打开了会话上下文而没有关闭它,导致session._depth变得不平衡,因此外部上下文无法提交,因此所有更改都没有提交。