我有带有命令的文件,与模型分开。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
知道必须执行哪些表(导入后)?