【问题标题】:My sqllite database gets reset every time I push changes, hosted on Openshift每次推送更改时,我的 sqlite 数据库都会重置,托管在 Openshift 上
【发布时间】:2015-08-21 16:03:28
【问题描述】:

我有一个基本的 web 应用程序,它托管在 Openshift 上,用 Python/Flask 编写。最近我添加了一个将用户数据存储到 SQLite 数据库的注册功能。该数据库位于主应用程序文件夹中。

当我测试页面时,它似乎运行正常;在注册页面上输入数据时,用户信息会流入数据库。问题是每次我将更改推送到应用程序时,数据库文件都会重置。如果我尝试使用 git pull 或 git fetch origin 拉取数据库中的更改,则不会反映在文件中。

有没有办法远程提交数据库更改,以便我可以拉取它们、进行任何需要的更改并推送到源而不丢失数据?

另外,我读到 Openshift 有一个环境变量 OPENSHIFT_DATA_DIR,在部署新更改时不会被重写。将数据库保存在这里会很棒。不幸的是,到目前为止,我还无法弄清楚如何使用我已阅读的参考资料正确地做到这一点。非常感谢任何帮助。

【问题讨论】:

    标签: python flask openshift


    【解决方案1】:

    没错,你应该将任何你想保留的文件保存在OPENSHIFT_DATA_DIR 中,它是你的程序在 openshift 上运行时定义的环境变量。您应该将其用作 sqllite 数据库的基本目录。

    import os
    basedir = os.environ.get('OPENSHIFT_DATA_DIR')
    
    import sqlite3
    conn = sqlite3.connect(os.path.join(basedir,'example.db'))
    

    或者在 openshift 上,您可以将 mysql 数据库添加到您的设备中。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2012-11-13
      • 1970-01-01
      • 1970-01-01
      • 2012-07-09
      • 2023-04-10
      • 1970-01-01
      • 2018-04-21
      • 1970-01-01
      相关资源
      最近更新 更多