我的本地计算机上有一个SQLite数据库,我在同一台机器上运行的Web服务使用SQLAlchemy访问它,如下所示:
engine = create_engine('sqlite:///{}'.format('mydatabase.db'), echo=True)
我们计划在托管数据库的单独机器上托管我们的Web服务。我们怎样才能制作这个“mydabata.db'我的Web服务可以远程访问我们的Web服务吗?谢谢。
答案 0 :(得分:1)
来自SQLite when to use docs:
客户端/服务器RDBMS可以更好地工作的情况
- 客户端/服务器应用程序
如果有许多客户端程序通过网络将SQL发送到同一数据库,则使用客户端/服务器数据库引擎而不是SQLite。 SQLite将在网络文件系统上运行,但由于与大多数网络文件系统相关的延迟,性能不会很好。此外,文件锁定逻辑在许多网络文件系统实现中都是错误的(在Unix和Windows上)。如果文件锁定无法正常工作,则两个或多个客户端可能会尝试同时修改同一数据库的同一部分,从而导致损坏。因为这个问题是由底层文件系统实现中的错误引起的,所以SQLite无法阻止它。
一个好的经验法则是避免在直接访问相同数据库(没有中间应用程序服务器)和同时通过网络从许多计算机访问的情况下使用SQLite。
SQLite适用于嵌入式系统,或者至少在同一台计算机上使用它时。恕我直言,您必须迁移到其中一个较大的SQL解决方案,如PostgreSQL,MariaDB或MySQL。如果您通过ORM(SQLAlchemy)生成了所有查询,那么迁移到另一个RDBMS就没有问题。但即使编写SQL查询也不应该有太多问题,因为所有这些RDBMS都使用非常相似的方言(不像微软的T-SQL)。由于SQLite是 lite ,它只支持其他RDBMS支持的子集,所以不应该有问题。