【问题标题】:Scheduled Background Database Updates using SQLAlchemy and Pyramid使用 SQLAlchemy 和 Pyramid 计划的后台数据库更新
【发布时间】:2019-05-11 20:41:52
【问题描述】:

我正在构建一个使用 SQLAlchemy 存储和检索数据的 Web 应用程序。我的目标是在应用程序不断运行时在后台按计划每天更新 SQLite 数据库。我目前的方法如下:

  1. SQLite 数据库首先通过以下脚本初始化和构建:initializedb.py,通过读取一系列文本文件并将适当的信息作为表中的行添加到数据库中
  2. Pyramid 应用程序随即运行并可通过localhost:6543 访问
  3. 然后用户可以访问从 SQLite 数据库读取的列表,使用 Jinja2 模板呈现

我的应用将 24/7 不间断运行,以便用户可以随时访问此列表。因为我初始化数据库的文本文件不断更新,所以我希望能够每天更新数据库。我的主要问题是:

如何使用 SQLAlchemy 和 Pyramid 每天自动更新数据库?

是否应该在与应用程序分开运行的脚本上定期更新数据库的代码,还是应该在 Pyramid 代码本身中完成,例如在views.py 中?

【问题讨论】:

  • 我将创建一个管理 Web 界面/API 界面,允许您通过应用程序本身对数据库进行更新。

标签: python sqlalchemy pyramid


【解决方案1】:

使用 cron 来安排常规任务

只需使用cron。每天运行一次初始化代码以重新创建数据库。

如果您需要更复杂,可以使用celery 获得更高级的东西。但我认为cron 将是最好的起点。

您应该将数据库设为主要数据库吗?

您应该尽量只拥有一份数据副本。听起来您有文本文件并将它们“导入”到数据库中。但听起来您的文本文件正在通过其他进程定期更新。

另一种方法是使数据库成为数据的规范版本。您可以在您的应用程序中创建一个管理界面来更新数据库。

如果数据是通过自动流程输入的,那么也许您可以创建一个导入脚本来获取新数据。

这可以通过命令行脚本来完成。只需将这种东西添加到您的setup.py

entry_points = """\
  [paste.app_factory]
  main = myapp:main
  [console_scripts]
  some_script = myapp.scripts.script:main
  another_script = myapp.any_module:some_function
  """

【讨论】:

    猜你喜欢
    • 2012-11-29
    • 2015-04-20
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2013-04-18
    • 2011-02-08
    • 2014-09-03
    • 2021-11-28
    相关资源
    最近更新 更多