【问题标题】:SQLite database remote accessSQLite 数据库远程访问
【发布时间】:2018-02-14 03:34:21
【问题描述】:

我在本地机器上有一个 SQLite 数据库,而我在同一台机器上运行的 Web 服务使用 SQLAlchemy 访问它,如下所示:

engine = create_engine('sqlite:///{}'.format('mydatabase.db'), echo=True)

我们计划在托管数据库的单独机器上托管我们的 Web 服务。我们如何才能使我们的 Web 服务可以远程访问这个“mydatabata.db”以访问我的 Web 服务?谢谢。

【问题讨论】:

    标签: database sqlite web-services sqlalchemy rdbms


    【解决方案1】:

    来自 SQLite when to use 文档:

    客户端/服务器 RDBMS 可能更好地工作的情况

    • 客户端/服务器应用程序

    如果有许多客户端程序通过网络向同一个数据库发送 SQL,则使用客户端/服务器数据库引擎而不是 SQLite。 SQLite 将在网络文件系统上工作,但由于与大多数网络文件系统相关的延迟,性能不会很好。此外,文件锁定逻辑在许多网络文件系统实现(在 Unix 和 Windows 上)中存在缺陷。如果文件锁定不能正常工作,两个或多个客户端可能会尝试同时修改同一数据库的同一部分,从而导致损坏。因为这个问题是由底层文件系统实现中的错误导致的,所以 SQLite 无法阻止它。

    一个好的经验法则是避免在将通过网络从多台计算机直接访问(没有介入的应用程序服务器)并同时从多台计算机访问同一数据库的情况下使用 SQLite。

    SQLite 适用于嵌入式系统,或者至少当您在同一台计算机上使用它时。恕我直言,您必须迁移到较大的 SQL 解决方案之一,例如 PostgreSQLMariaDBMySQL。如果您已经通过 ORM (SQLAlchemy) 生成了所有查询,那么迁移到另一个 RDBMS 将没有问题。但是即使编写 SQL 查询也不应该有太多问题,因为所有这些 RDBMS 都使用非常相似的方言(不像微软的 T-SQL)。由于 SQLite 是 lite,它只支持其他 RDBMS 支持的一个子集,所以应该没有问题。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-01-08
      • 2018-04-02
      • 2015-05-29
      • 2010-12-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-10-20
      相关资源
      最近更新 更多