Ich bin ein wenig verwirrt mit dem Thema, auf das im Titel angespielt wird.Flask-SQLAlchemy - Wann werden die Tabellen/Datenbanken erstellt und gelöscht?
Also, wenn eine Flask-App gestartet wird, sucht die SQLAlchemy die SQLALCHEMY_DATABASE_URI
für die richtige, in meinem Fall MySQL-Datenbank. Werden die Tabellen dann erstellt, wenn sie nicht bereits vorhanden sind?
Was ist, wenn die Datenbank, die in die SQLALCHEMY_DATABASE_URI
Variable in der config.py
Datei programmiert ist, nicht existiert?
Was ist, wenn diese Datenbank existiert und nur einige der Tabellen existieren (Es gibt mehr Tabellen, die in den SQLAlchemy-Code als in der tatsächlichen MySQL-Datenbank vorhanden sind)? Löscht es diese Tabellen und erstellt dann neue Tabellen mit den aktuellen Spezifikationen?
Und was ist, wenn diese Tabellen alle existieren? Werden sie gelöscht und neu erstellt?
Ich versuche zu verstehen, wie der gesamte Prozess funktioniert, damit ich (1) Datenbankinformationen nicht verlieren, wenn Änderungen an dem Schema vorgenommen werden, und (2) den erforderlichen Code schreiben kann, vollständig zu verwalten, wie und wann SQLAlchemy spricht mit der eigentlichen Datenbank.
Ich kenne diese Methoden, aber darf ich sie nicht aus der App heraus aufrufen? Wie kann beim Start der App überprüft werden, ob diese Datenbank existiert und, wenn dies nicht der Fall ist, die Methode create_all aufrufen? Im Mega Tutorial verwendet er SQLite, was bedeutet, dass er nach einer Datei suchen kann, um zu sehen, ob seine Datenbank da ist. Ist das mit MySQL möglich? –
@AlexChumbley: Sie können das sicherlich tun; finde heraus, ob keine Tabellen aufgelistet sind, und rufe 'create_all' automatisch auf. –
@AlexChumbley: Ich arbeite gerade an einer GAE-App, wo man mit einer '/ admin'-Route den' create_tables'-Teil aufrufen kann, mit Blick auf zukünftige Migrationsunterstützung. –