Attualmente sto provando a mettere insieme una piccola applicazione Flask. Questa è la mia strutturaFlask e SQLAlchemy, applicazione non registrata su istanza
run.py
application
__init__.py
database.py
models.py
views.py
database.py
contiene solo l'oggetto SQLAlchemy:
db = SQLAlchemy()
Ho poi importare questo nel mio models.py
per creare i miei modelli. Infine, all'interno __init__.py
importare db
da database.py
e fare:
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()
Tuttavia, non riesco a creare le tabelle dai modelli appare. Se rimuovo db.create_all()
. L'applicazione verrà eseguita senza problemi, ma ovviamente il database non viene creato. Quando è presente db.create_all()
, viene visualizzato "RuntimeError: applicazione non registrata su istanza db e nessuna applicazione associata al contesto corrente".
Sono sinceramente confuso, come prima avevo problemi nell'avviare l'applicazione senza creare il database, ma spostare db
nel proprio file sembra aver risolto in qualche modo quel problema. Ora, l'unico problema rimane in realtà è la creazione del database.
Qualcuno può dirmi quale potrebbe essere il problema? Sono sinceramente perplesso.
Ah, capisco. Comunque, quello che ho finito è stato importare 'app' sui miei modelli e creare l'oggetto' db' lì. Questo sembrava alleviare tutti i miei problemi. – Battleroid
Fantastico, funziona anche. Sono contento che tu sia stato in grado di aggiustarlo! –
potresti anche fare questo 'db.create_all (app = app)' e impostare l'argomento 'app' sulla tua app attuale – danidee