Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sqlite/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在部署到OpenShift后保护SQLite数据库不被恢复?_Python_Sqlite_Openshift - Fatal编程技术网

Python 如何在部署到OpenShift后保护SQLite数据库不被恢复?

Python 如何在部署到OpenShift后保护SQLite数据库不被恢复?,python,sqlite,openshift,Python,Sqlite,Openshift,我将一个PythonTwisted应用程序移植到OpenShift,OpenShift将其数据存储到SQLite数据库。在将数据库文件放入git repodata/目录(在第一次部署期间)之后,我没有遇到任何问题,但在第二次部署时数据库被重置 我为这种奇怪的行为寻找了一个合适的解决方案(考虑到数据库正在进行版本控制),然后我发现: 这个问题的简单解决方案是将SQLite数据库从git存储库存储到“data”目录中一级 现在我的问题是,当我将数据库移动到此目录时会发生什么?我必须移动或复制数据目录

我将一个PythonTwisted应用程序移植到OpenShift,OpenShift将其数据存储到SQLite数据库。在将数据库文件放入git repo
data/
目录(在第一次部署期间)之后,我没有遇到任何问题,但在第二次部署时数据库被重置

我为这种奇怪的行为寻找了一个合适的解决方案(考虑到数据库正在进行版本控制),然后我发现:

这个问题的简单解决方案是将SQLite数据库从git存储库存储到“data”目录中一级

现在我的问题是,当我将数据库移动到此目录时会发生什么?我必须移动或复制数据目录的内容吗?这些数据将在不同的部署中保存


我试图将数据库从
repo/data
目录移动到
data/
目录,但应用程序无法访问此上层目录。我正在寻找这个问题的最佳解决方案。

我通过将应用程序数据分为两类找到了解决方案:

  • 有状态数据
  • 动态数据
我将有状态信息保留在
repo/data
目录中,并将更改的数据永久移动到上层
data/
目录。进行此更改后,我能够在git repo中维护版本控制下的有状态_数据,通过以下方式访问这些数据:

 __location__ = os.path.realpath(os.path.join(os.getcwd(), os.path.dirname(__file__)))
 static_data_folder = __location__ + '/data/'
然后,动态生成的数据被移动到
$OPENSHIFT\u data\u DIR
,该目录不受版本控制,并对应于my
应用程序根目录的上层目录。我在singleton配置模块中更改了getter以返回此可变数据文件夹:

我现在正在测试这个配置,但它看起来很有魅力

self.mutable_data_path = os.environ['OPENSHIFT_DATA_DIR'] + "mutable_data_subdir/"