Ich versuche gerade, eine kleine Flask-Anwendung zusammenzusetzen. Das ist meine Struktur.Flask und SQLAlchemy, Anwendung nicht auf Instanz
run.py
application
__init__.py
database.py
models.py
views.py
database.py
enthält nur die SQLAlchemy Objekt:
db = SQLAlchemy()
ich diese dann in mein models.py
importieren, um meine Modelle zu erstellen. Schließlich innerhalb __init__.py
importiere ich db
von database.py
und zu tun:
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()
Allerdings kann ich die Tabellen aus den Modellen nicht schaffen es erscheint. Wenn ich db.create_all()
entferne. Die Anwendung wird ohne Probleme ausgeführt, aber offensichtlich wird die Datenbank nicht erstellt. Wenn db.create_all()
vorhanden ist, bekomme ich 'RuntimeError: Anwendung nicht registriert auf der DB-Instanz und keine Anwendung an den aktuellen Kontext gebunden'.
Ich bin ehrlich verwirrt, wie zuvor hatte ich Probleme, nur die Anwendung zu starten, ohne die Datenbank zu erstellen, aber db
in die eigene Datei zu verschieben scheint das Problem irgendwie zu korrigieren. Jetzt bleibt nur noch das Problem, die Datenbank zu erstellen.
Kann mir jemand sagen, was das Problem sein könnte? Ich bin echt ratlos.
Ah, ich verstehe. Am Ende habe ich jedoch "app" in meine Modelle importiert und dort das "db" -Objekt erstellt. Das schien all meine Probleme zu lindern. – Battleroid
Cool, das funktioniert auch. Freut mich, dass du es reparieren konntest! –
können Sie auch 'db.create_all (app = app)' machen und das 'app' Argument auf Ihre aktuelle App setzen – danidee