可以同时使用图形数据库和关系数据库,也可以仅在一个数据库上构建系统吗?

时间:2019-12-19 10:01:58

标签: database flask locking flask-sqlalchemy

有一个学生,其type属性为4。

在Flask-SQLAlchemy中

在会话1中:

user = Student.query.with_for_update(of=Student, nowait=True).filter(Student.id == 122).first()
user.type = 1
db.session.commit()

在会话2中:

user = Student.query.filter(Student.id == 122).first()
user.type -= 1
db.session.commit()

我得到的结果是用户的type等于3,而会话1锁定行并设置type = 1时我应该得到类型= 0,然后会话2事务应该从用户的type属性中减去1


但是在会话2中,当我与会话1同时运行时:

user = Student.query.filter(Student.id == 122).update({"type": Student.type - 1})
db.session.commit()

我得到正确的输出,即学生122s type属性= 0(与会话1事务同步)。

为什么会这样,更新查询之间有什么区别

user = Student.query.filter(Student.id == 122).first()
user.type -= 1
db.session.commit()

user = Student.query.filter(Student.id == 122).update({"type": Student.type - 1})
db.session.commit()

0 个答案:

没有答案
相关问题