我对数据库比较陌生。我相信这是经验会回答的问题。
我将 SQLAlchemy 与 PostgreSQL 一起使用。我设置了一个系统,其中分布在多台计算机上的多个进程执行各种任务,然后更新数据库。我在测试中还没有遇到任何事务冲突,但理论上它们仍然是可能的。
根据我在 Google 上找到的信息,看来我要么必须获得数据库锁,要么准备重新启动事务。不幸的是,关于如何实际执行此操作的信息很少。
我假设,要重新启动事务,SQLAlchemy 会抛出一些异常,我的代码必须捕获这些异常,并自行执行重试。如果我违反了唯一性约束,表明我的代码中存在错误而不是事务冲突,那么该异常是否与 SQLA 抛出的异常不同?使用数据库锁会更好吗?
提前致谢!
- 编辑 -
我刚刚了解了“ConcurrentModificationError”。这个名字听起来确实像我正在寻找的例外。文档说它是StaleDataError的别名,它的名字听起来还是对的,但它的文档非常不透明。这是我正在寻找的错误吗?
再次,非常感谢!