Имам проблем почти точно като този: Как да предпазя SQLite база данни от връщане след внедряване в OpenShift?
Не разбирам отговора му напълно и очевидно недостатъчно, за да го приложа към собственото си приложение и тъй като не мога да коментирам отговора му (няма достатъчно представител), реших, че трябва да задам собствен въпрос.
Проблемът е, че когато натискам моите локални файлове (без да включвам файла с базата данни), моята база данни на openshift става тази, която имам локално (всички промени, направени през сървъра, се връщат).
Търсих много в Google и до голяма степен разбирам проблема, че базата данни трябва да се намира някъде другаде, но не мога да разбера напълно къде да я поставя и как да я разположа, ако е извън репото.
РЕДАКТИРАНЕ: Бързо решение: Ако имате този проблем, опитайте да се свържете с вашето приложение 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