Flask-SQLAlchemy - Wann werden die Tabellen / Datenbanken erstellt und gelöscht?

8

Ich bin ein wenig verwirrt mit dem Thema, auf das im Titel angespielt wird.

Wenn also eine Flask-App gestartet wird, durchsucht die SQLAlchemy die SQLALCHEMY_DATABASE_URI nach der korrekten, in meinem Fall, MySQL-Datenbank. Werden die Tabellen dann erstellt, wenn sie nicht bereits vorhanden sind?

Was ist, wenn die Datenbank, die in der 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 enthalten sind)? Löscht es diese Tabellen und erstellt dann neue Tabellen mit den aktuellen Spezifikationen?

Und was, wenn diese Tabellen alle existieren? Werden sie gelöscht und neu erstellt?

Ich versuche zu verstehen, wie der gesamte Prozess funktioniert, so dass ich (1) Datenbankinformationen nicht verlieren, wenn Änderungen an dem Schema vorgenommen werden, und (2) den erforderlichen Code schreiben kann, um vollständig zu verwalten, wie und wann die SQLAlchemy spricht mit der eigentlichen Datenbank.

    
Alex Chumbley 20.01.2014, 20:14
quelle

1 Antwort

10

Tabellen werden nicht automatisch erstellt; Sie müssen die Methode SQLAlchemy.create_all() explizit aufrufen es erstellt Tabellen für Sie:

%Vor%

Sie können dies beispielsweise mit dem Befehlszeilendienstprogramm tun. Oder, wenn Sie auf einem PaaS wie Google App Engine eine dedizierte Nur-Admin-Ansicht bereitstellen.

Dasselbe gilt für die Zerstörung von Datenbanktabellen; Verwenden Sie die Methode SQLAlchemy.drop_all() .

Siehe das Kapitel Erstellen und Löschen von Tabellen in der Dokumentation , oder werfen Sie einen Blick auf das Datenbankkapitel des Mega Flask Tutorials / p>     

Martijn Pieters 20.01.2014, 20:27
quelle