Die quickstart tutorial für das Flask-SQLAlchemy-Plugin weist Benutzer an, Tabellenmodelle zu erstellen, die die Klasse db.Model
erben, z.Was ist der Unterschied zwischen der declarative_base() und db.Model?
app = Flask(__main__)
db = SQLAlchemy(app)
class Users(db.Model):
__tablename__ = 'users'
...
jedoch die SQLAlchemy tutorial und die Flasche-SQLAlchemy README vorschlagen, dass sowohl Tischmodelle ein Base
von declarative_base()
instanziiert erben.
Base = declarative_base()
class Users(Base):
__tablename__ = 'users'
...
Was ist der Unterschied zwischen diesen beiden Ansätzen?
Ich habe gerade nach dieser App gesucht, die ich seit ungefähr einem Jahr erstellt habe, ursprünglich basierend auf Ihrem "Mega Flask Tutorial", das db.Model anstelle von Base = Declarative_Base verwendet. Ich war verwirrt, weil meine Modelle alle eindeutig die deklarative Erweiterung verwenden, aber ich hatte noch nie declarative_base() aufgerufen. Danke für die tolle Erklärung! – Chockomonkey
Ist es möglich, db.Model in einem Benutzermodell und Basis im Adressmodell zu verwenden. Zum Beispiel: - Klasse Benutzer (db.Model), Klasse Adresse (Base)? –
Nicht sicher, aber ich vermute, dass einige Dinge nicht funktionieren werden. Flask-SQLAlchemy fügt der Basis in der Klasse 'db.Model' etwas Verhalten hinzu, so dass alle Modelle, die direkt von der deklarativen Basis erben, dies nicht haben. – Miguel