python - 使用 SQLAlchemy 和 Pyramid 计划的后台数据库更新
问题描述
我正在构建一个使用 SQLAlchemy 存储和检索数据的 Web 应用程序。我的目标是在应用程序不断运行时在后台按计划每天更新 SQLite 数据库。我目前的方法如下:
- SQLite 数据库首先从脚本初始化和构建:
initializedb.py
通过读取一系列文本文件并将适当的信息作为表中的行添加到数据库中 - 然后运行 Pyramid 应用程序,并可通过以下方式访问
localhost:6543
- 然后,用户可以访问从 SQLite 数据库读取的列表,使用 Jinja2 模板呈现
我的应用程序将持续 24/7 运行,以便用户可以随时访问此列表。因为我初始化数据库的文本文件在不断更新,所以我也希望能够每天更新数据库。我的主要问题是:
如何使用 SQLAlchemy 和 Pyramid 每天自动更新数据库?
定期更新数据库的代码应该在与应用程序分开运行的脚本上完成,还是应该在 Pyramid 代码本身中完成,例如在views.py
?
解决方案
使用 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
"""
推荐阅读
- javascript - JQWidgets jqxTabs 组错误 - 切换选项卡时的问题
- go - 以尽可能少的开销解析日志条目
- flutter - 是否可以将 Flutter 中的 PageView 设置为只能从边缘滑动?
- android - 在 Xamarin Forms 中绑定之前修改数据
- python - 如何将函数转换为类并将表单传递给 Django?
- python - 多重条件 IF/ELSE 语句 Robot Framework 4
- javascript - 我想在 React 的 VirtualizedSelect 中的箭头(展开)图标之前添加一个搜索图标。我们可以定制它吗?
- pandas - hoverinfo 中显示的文本不仅显示
- web - 基于桌面和 Web 的应用程序集成自动化框架
- delphi - 使用 THTTPRIO 的 Delphi SOAP 调用导致客户端错误“无法发送”