У меня проблема почти такая же: -openshi">Как защитить базу данных SQLite от возврата после развертывания в OpenShift?
Я не понимаю его ответ полностью и явно недостаточно, чтобы применить его к моему собственному приложению, и, поскольку я не могу прокомментировать его ответ (недостаточно представителей), я решил, что должен задать свой вопрос.
Проблема в том, что при отправке моих локальных файлов (не включая файл базы данных) моя база данных на openshift становится той, что у меня есть локально (все изменения, сделанные через сервер, отменяются).
Я много гуглил и в значительной степени понимаю, что проблема в том, что база данных должна быть расположена где-то еще, но я не могу полностью понять, где ее разместить и как ее развернуть, если она находится за пределами репо.
EDIT: Быстрое решение. Если у вас возникла эта проблема, попробуйте подключиться к приложению openshift с помощью rhc ssh appname
, а затем cp app-root/repo/database.db app-root/data/database.db
, если у вас есть каталог данных openshift в качестве ссылки на SQLALCHEMY_DATABASE_URI. Тем не менее, я рекомендую принятый ответ ниже!
Я прикрепил свою файловую структуру и вот соответствующий код:
config.py
import os
basedir = os.path.abspath(os.path.dirname(__file__))
SQLALCHEMY_DATABASE_URI = 'sqlite:///' + os.path.join(basedir, 'database.db')
SQLALCHEMY_MIGRATE_REPO = os.path.join(basedir, 'db_repository')
приложение/__ init.py__
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
app = Flask(__name__)
#so that flask doesn't swallow error messages
app.config['PROPAGATE_EXCEPTIONS'] = True
app.config.from_object('config')
db = SQLAlchemy(app)
from app import rest_api, models
wsgi.py:
#!/usr/bin/env python
import os
virtenv = os.path.join(os.environ.get('OPENSHIFT_PYTHON_DIR', '.'), 'virtenv')
#
# 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 app import app as application
## runs server locally
if __name__ == '__main__':
from wsgiref.simple_server import make_server
httpd = make_server('localhost', 4599, application)
httpd.serve_forever()
файловая структура: http://sv.tinypic.com/r/121xseh/8 ( не могу прикрепить картинку..)
.gitignore
- person nathancahill   schedule 28.04.2015