网络上的SQLite
我正在创建一个使用嵌入式SQLite数据库的Python应用程序。这个程序会创建数据库文件,这些文件存放在一个共享的网络驱动器上。目前网络上最多会有5台电脑在运行这个程序。
我最开始的想法是,在程序启动时询问用户他们是服务器还是客户端。如果他们是服务器,就由他们来创建数据库;如果是客户端,他们需要在网络上找到一个服务器实例。我想的一个方法是,让客户端把所有的数据库命令发送给服务器,然后由服务器在数据库中执行。这种方式能解决共享数据库的问题吗?
另外,有没有办法创建一个SQLite的“服务器”?如果有的话,我想这会是一个更快的选择。
注意:目前我不能使用像MySQL或PostgreSQL这样的服务器引擎,但我正在使用ORM(对象关系映射),所以当这个变得可行时,切换过来应该会很简单。
1 个回答
0
这里有一个“SQLite服务器”,网址是 http://sqliteserver.xhost.ro/,不过看起来已经好几年没有维护了。
SQLite本身支持并发,也就是说多个进程可以同时读取数据,但只能有一个进程可以写入数据。而且,当某个进程在写数据时,它会把整个数据库文件锁住几秒钟,其他进程在这段时间内就得等着,具体情况可以参考官方文档。
我觉得这对于你提到的5个进程来说是足够的。你只需要写一些代码来处理等待的情况。