我正在嘗試拼湊一個小Flask應用程序。這是我的結構。Flask和SQLAlchemy,應用程序未在實例上註冊
run.py
application
__init__.py
database.py
models.py
views.py
database.py
只包含SQLAlchemy的對象:
db = SQLAlchemy()
我然後導入到我的models.py
它來創建我的模型。最後,內部__init__.py
我導入db
從database.py
做:
from .database import db
from flask import Flask
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///application.db'
db.init_app(app)
db.create_all()
但是,我不能創建從它出現在模型中的表。如果我刪除db.create_all()
。該應用程序將運行沒有問題,但顯然不創建數據庫。當出現db.create_all()
時,我給出'RuntimeError:應用程序未在數據庫實例中註冊,並且沒有綁定到當前上下文的應用程序'。
老實說,我很困惑,因爲之前我在剛創建應用程序時沒有創建數據庫的問題,但將db
移動到它自己的文件似乎已經糾正了這個問題。現在,唯一的問題仍然是創建數據庫。
誰能告訴我可能是什麼問題?我真的很難過。
啊,我明白了。不過,我最終做的是將'app'導入我的模型並在那裏創建'db'對象。這似乎緩解了我所有的問題。 – Battleroid 2014-10-23 02:24:06
很酷,也適用。很高興你能解決它! – 2014-10-23 02:35:07
你也可以這樣做'db.create_all(app = app)'並將'app'參數設置爲你當前的應用程序 – danidee 2016-07-20 15:28:16