Anstelle von Kolben-Peewee Ich benutze Ebene peewee Paket.Flask + Peewee: Wo Tabellen erstellen?
Hier ist die Art, wie ich die Datenbank bin Initialisierung:
import os
# just extending the BaseFlask with yaml config reader
from . extensions.flask_app import Flask
# peewee's wrapper around the database
from playhouse.flask_utils import FlaskDB
db_wrapper = FlaskDB()
# define the application factory
def create_app(env):
app = Flask(__name__)
# load config depending on the environment
app.config.from_yaml(os.path.join(app.root_path, 'config.yml'), env)
# init extensions
db_wrapper.init_app(app)
# ...
Ich weiß, dass ich diese Tabellen erstellen rufen sollte:
from . models import User
db_wrapper.database.connect()
db_wrapper.database.create_tables([User])
Aber wo ich die Schaffung Code Tisch , so dass die Datenbank bereits initialisiert wäre?
bearbeiten
Mit Blick auf den docs fand ich heraus, dass ich User.create_table(fail_silently=True)
so verwenden kann:
# in app/__init__.py
# define the application factory
def create_app(env):
app = Flask(__name__)
# load config depending on the environment
app.config.from_yaml(os.path.join(app.root_path, 'config.yml'), env)
# init extensions
db_wrapper.init_app(app)
create_tables();
# rest of the initialization
def create_tables():
from . models import User
User.create_table(fail_silently=True)
Ist es in Ordnung, es hier zu tun? Oder gibt es einen besseren Weg/Werkzeug dafür?
bearbeiten
es herausgefunden. Bitte, siehe meine Antwort unten.
Warum Flask-Script verwenden? Flask bietet seit über einem Jahr eine integrierte CLI. Fügen Sie einfach einen benutzerdefinierten Befehl mit '@ app.cli.command' hinzu. – davidism
@davidism Ich wusste das nicht. Danke, dass du mich darauf hingewiesen hast. Ich werde das überprüfen. – lexeme
Achten Sie darauf, Ihre Verbindungen nach dem Erstellen der Tabellen zu bereinigen! – coleifer