如何在openshift中初始化PostgreSQL数据库一次

时间:2014-07-27 16:09:45

标签: postgresql openshift

为了部署我的烧瓶基于postgresql的应用程序,我想用几个项目初始化我的数据库。因此我为此创建了一个manage.py。这是因为我只想将项目输入数据库一次。在那之后,我想像往常一样去(git push我的项目)。 我的项目工作正常,问题是我不知道我应该在哪里放置我的manage.py以及如何将其用作管理员或确保它只运行一次。 我使用manage.py作为 python manage.py create_tables。

这是我的wsgi文件夹:

├── application
├── app.py
├── auth.py
├── flaskapp.cfg
├── forms.py
├── main.py
├── models.py
├── result.json
├── templates
│   ├── base.html
│   ├── evaluate.html
│   └── show_all.html
└── views.py

这是我的项目文件夹:

manage.py  readme.md  requirements.txt  setup.py  venv  wsgi  wsgi.py

显然,我希望以这样的方式初始化数据库:每次我更改代码和推送时,我都不想用相同的条目重新初始化数据库,但只有在我想要的时候,并且作为管理员

这是我的应用程序文件:

#!/usr/bin/python
import os

virtenv = os.environ['OPENSHIFT_PYTHON_DIR'] + '/virtenv/'
os.environ['PYTHON_EGG_CACHE'] = os.path.join(virtenv, 'lib/python2.7/site-packages')
virtualenv = os.path.join(virtenv, 'bin/activate_this.py')
try:
    execfile(virtualenv, dict(__file__=virtualenv))
except IOError:
    pass
#
# IMPORTANT: Put any additional includes below this line.  If placed above this
# line, it's possible required libraries won't be in your searchable path
# 

from main import app as application
from main import *
db.create_all()

openshift中的应用程序文件没有很好地记录,并且不清楚什么是正确进行一次数据库初始化的地方。

1 个答案:

答案 0 :(得分:2)

将此代码放在部署文件中的.openshift / action_hooks下:

source $OPENSHIFT_HOMEDIR/python/virtenv/bin/activate
python "$OPENSHIFT_REPO_DIR"wsgi/manage.py

每次部署应用程序时,此脚本都将运行manage.py.