2

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

4

0 回答 0