モデルとは別に、コマンドを含むファイルがあります。models
モデルは、すべてのモデルをstarter
ファイルにインポートした後にのみ実行されました。
db = SQLAlchemy(app)
from models import *
try:
argv = sys.argv[1]
argv == '--run' and app.run()
argv == '--create' and db.create_all()
しかし、それは私にとってかなりあいまいです。Flask-Sqlalchemy のソース コードについて説明します。私が見た:
def get_tables_for_bind(self, bind=None):
"""Returns a list of all tables relevant for a bind."""
result = []
for table in self.Model.metadata.tables.itervalues():
if table.info.get('bind_key') == bind:
result.append(table)
return result
そして、私は次のことを理解していself.Model
ます:
def make_declarative_base(self):
"""Creates the declarative base."""
base = declarative_base(cls=Model, name='Model',
mapper=signalling_mapper,
metaclass=_BoundDeclarativeMeta)
base.query = _QueryProperty(self)
return base
実行するモデルを指定するより明示的な方法はありますか? また、self.Model
(インポート後に) どのテーブルを実行する必要があるかをどのように知るのでしょうか?