【问题标题】:Sharing SQLite3 database between multiple programs在多个程序之间共享 SQLite3 数据库
【发布时间】:2014-08-18 23:39:35
【问题描述】:

我已经开始使用 Flask 和 Flask-SQLAlchemy 构建一个 Web 应用程序。我在构建 Web 应用程序方面的经验非常有限,所以如果我有歧义,我先道歉。

Web 应用程序的数据库已由服务器上运行的另一个程序构建。所以所有的表都已经在数据库中预定义了。我的网络应用程序和服务器上运行的其他程序将对数据库具有读写访问权限。

最近我决定重组我的应用程序并迎合模型-视图-控制器模式,类似于 Django,并使用蓝图使事情更易于管理和更整洁。类似于这个https://github.com/mitsuhiko/flask/wiki/Large-app-how-to

...
app_name/
    model.py
    view.py
    controller.py
    __init__.py
...

所以我已经完成了一些教程并阅读了 Flask-SQLAlchemy,但我无法理解的是 如果我的数据库已经预定义,我如何在应用程序中定义我的模型由另一个程序??。以及如何将 SQLAlchemy ORM 与预定义的数据库一起使用?

以前,在我决定重组之前,我只是使用 Pyhton 的 sqlite3 库从数据库中抓取内容并将其显示在网页上。它不是很漂亮,而且我构建事物的方式很快就会失控。

【问题讨论】:

    标签: python sqlite flask sqlalchemy flask-sqlalchemy


    【解决方案1】:

    其他程序是否也使用 sqlalchemy 以便您可以提升/共享其模型? 如果没有,您可以尝试反射:http://docs.sqlalchemy.org/en/latest/core/reflection.html 或者这个实验性自动映射:http://docs.sqlalchemy.org/en/latest/orm/extensions/automap.html

    您的问题与此无关,但 sqlite3 是文件数据库,而不是客户端-服务器数据库。不是说你会,但你可能会遇到并发问题:

    sqlite3 concurrent access

    http://www.sqlite.org/lockingv3.html

    操作系统和文件系统在其中发挥作用。

    【讨论】:

    • 对于小型应用程序,这些都可以。但是(这是对 OP 而言)这将是混乱且难以维护的,因为如果需要任何数据库更改,您需要在两个地方进行。一个更好的模型是只有一个数据库写入者并为其他所有内容公开一个 API。遗憾的是,您不能将 SQLAlchemy 与该模型一起使用。
    猜你喜欢
    • 2014-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-10-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多