Mi piacerebbe usare Flask-Migrate e sto guardando il loro esempio:Come faccio a dividere i modelli Flask da app.py senza passare l'oggetto db dappertutto?
from flask import Flask
from flask.ext.sqlalchemy import SQLAlchemy
from flask.ext.script import Manager
from flask.ext.migrate import Migrate, MigrateCommand
app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///app.db'
db = SQLAlchemy(app)
migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)
class User(db.Model):
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(128))
if __name__ == '__main__':
manager.run()
Questo funziona come un semplice esempio di gioco, ma ho più di un modello unico e non voglio definire i modelli sia in questo script sia in quello che definisce il mio codice applicazione. Quindi, voglio inserirli in un file di modello che posso condividere tra i due.
Sto tentando di farlo, inserendo la classe User
in un models.py
e quindi importando Utente da lì. Sfortunatamente, quello lancia un NameError: name 'db' is not defined
.
La mia domanda (s) sono:
- ho bisogno per utilizzare
db = SQLAlchemy(app)
nel miomodels.py
, e in tal caso questo sarà disponibile sia in mio script di migrazione e l'applicazione pallone in sé? - Se non posso (o non dovrei) metterlo in
models.py
, come posso utilizzare i miei modelli nel loro file senza passaredb
dappertutto?
Controllare questo https://realpython.com/blog/python/python-web-applications-with-flask-part-ii/ – PetarP