TL; DR:
如何使用SQLAlchemy从Python中的多个线程调用PostgreSQL数据库时阻止数据库访问问题?
详细信息:
我正在开发一个使用多线程(concurrent.futures ThreadPool)的 Python 软件 - 但我绝不是任何专家。
我还使用 SQLAlchemy 与 PostgreSQL 数据库进行通信(使用pg8000)。
因为我想将所有数据库内容与其他所有内容分开,所有 SQLAlchemy代码位于我称为db_manager.py的Python模块中。在这里,您将找到声明性基础,create_engine()调用,但也有大量方法来获取东西或在数据库中存储东西。这里的每种方法都以:
结束session.commit()
(除非我只查询数据库)。
然后,每个线程都会调用db_manager模块与数据库进行交互,例如:
db_manager.getSomethingFromDB(...)
我创建了一个小图来说明架构。
问题:
现在我遇到的问题是这些数据库调用有时会发生冲突。 处理多线程,SQLAlchemy和PostgreSQL的最佳方法是什么?
一些想法: