我有一个程序,多台计算机将运行,都需要读/写从同一个SQLite数据库。每个程序正在执行一个文件上的动作,它要求一个“可用”的文件名从一个列表中存储在一个SQLite表。最多,将有6-10个用户运行这个。伪代码将是...
con = sqlite.connection(db,timeout=60)
filename = select file from tablename limit 1;
update tablename set status ="busy" where file = filename;
<..perform action. takes 2-5 minutes..>
update tablename set status ="Finished" where file = filename;
repeat
所以每个事务都非常快,但不幸的是,即使我把连接超时设置得很高,我仍然遇到“数据库被锁定”的问题。我读过apsw中的异步vfs,但听起来队列管理器只在一台机器上。有什么建议吗?
我应该补充一句,我受到IT的限制,无法在办公桌上设置适当的SQL服务器。
1条答案
按热度按时间ct2axkht1#
(披露:我是APSW作者)SQLite团队很久以前就弃用了异步VFS,多年来一直没有将其包含在APSW中。SQLite核心使用write ahead logging提供了更好的集成等效功能。
...本地到一台计算机...
这意味着您正在尝试通过网络使用SQLite。不要这样做。它不会工作。它最初看起来会工作,但最终会损坏。您无法提前测试以证明不会发生损坏。More details here。