현재 작은 플라스크 응용 프로그램을 함께 조각하려고합니다. 이것은 나의 구조이다.플라스크 및 SQLAlchemy, 응용 프로그램이 인스턴스에 등록되지 않았습니다.
db = SQLAlchemy()
그때 내 모델을 만들 내 models.py
이 점을 가져옵니다
run.py
application
__init__.py
database.py
models.py
views.py
database.py
그냥 SQLAlchemy의 객체가 포함되어 있습니다. 마지막으로, __init__.py
내부에서 나는 database.py
에서 db
을 가져 수행
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 인스턴스에 등록되지 않은 응용 프로그램이고 현재 컨텍스트에 바인딩 된 응용 프로그램이 없습니다'라는 메시지가 나타납니다.
전 데이터베이스를 만들지 않고 응용 프로그램을 시작하기 전에 문제가 발생하는 것처럼 솔직히 혼란 스럽지만 db
을 자신의 파일로 이동하면 어떻게 든 문제가 해결 된 것 같습니다. 자, 유일한 문제는 실제로 데이터베이스를 만드는 것입니다.
누구에게 어떤 문제가 있다고 말할 수 있습니까? 나는 정말로 엉망이다.
아, 알겠습니다. 그러나, 내가 끝낸 것은'app'을 내 모델로 가져 와서 거기에'db' 오브젝트를 생성하는 것이 었습니다. 그것은 내 모든 문제를 완화시키는 것 같았다. – Battleroid
멋지다. 다행히 고칠 수있었습니다! –
당신은 또한이'db.create_all (app = app)'를하고 현재 app에'app' 인수를 설정할 수 있습니다. – danidee