为了部署我的烧瓶基于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中的应用程序文件没有很好地记录,并且不清楚什么是正确进行一次数据库初始化的地方。
答案 0 :(得分:2)
将此代码放在部署文件中的.openshift / action_hooks下:
source $OPENSHIFT_HOMEDIR/python/virtenv/bin/activate
python "$OPENSHIFT_REPO_DIR"wsgi/manage.py
每次部署应用程序时,此脚本都将运行manage.py.