SQLAlchemy、sqlite与fork()
在一个使用 fork()
的 SQLAlchemy 和 sqlite 项目中,最好的做法是什么呢?
SQLAlchemy 的文档里提到,应该在子进程中调用 create_engine()
,但没有提到其他需要注意的地方。我相信还有很多需要注意的事项,比如写入锁、忙碌超时、连接问题等等。
那么,关于使用事务还是作用域会话的设计问题,这个会有影响吗?
2 个回答
0
SQLite会为你处理所有数据库的锁定问题;这意味着在数据库连接的客户端,你不需要也不应该去考虑这些事情。
1
SQLite不支持同时写入,也就是说在任何时候,只有一个客户端可以往同一个数据库里写数据。因为有这个限制,使用事务的唯一好处就是可以撤销操作。如果你打算使用多个数据库,要注意不要陷入死锁的情况,比如两个进程在一个数据库里持有写锁,同时又想在另一个数据库里获取写锁,这样就会造成冲突。