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