【发布时间】:2016-01-09 19:19:20
【问题描述】:
我对 sqlalchemy-psql 中的锁定机制如何工作感到非常困惑。 我正在使用 sqlalchemy 和 postgres 运行 python-flask 应用程序。由于我有多个线程处理一些数据并在 psql 上更新它,我遇到了以下死锁:
2015-12-31 17:[错误](由于查询调用自动刷新而引发;如果此刷新过早发生,请考虑使用 session.no_autoflush 块)(psycopg2.extensions.TransactionRollbackError)检测到死锁
详细信息:进程 22833 等待事务 14114188 上的 ShareLock;被进程 19759 阻止。
进程 19759 等待事务 14114189 上的 ShareLock;被进程 22833 阻止。
这样会不会出现死锁:
Thread 1 Thread 2
| (start an sqlalchemy session) |
db.session() db.session()
|(Using sqlalchemy) |
Update row1 of table1 Update row2 of table 1
| |
Update row2 of table1 Update row1 of table1
| |
session.commit() session.commit()
Here 是我的问题的一些答案,但我无法将它们与 sqlalchemy 联系起来。
【问题讨论】:
标签: python postgresql sqlalchemy flask-sqlalchemy database-deadlocks