Python 名称错误:名称';基数';没有定义
下面是包含所有表映射器类的文件Python 名称错误:名称';基数';没有定义,python,sqlite,python-2.7,sqlalchemy,Python,Sqlite,Python 2.7,Sqlalchemy,下面是包含所有表映射器类的文件 // import statements Class MyBase(AbstractBase, Base): session = None def __init__(self): global Session self.session = Session() // init statements Class Table1(MyBase): // fields engine = create
// import statements
Class MyBase(AbstractBase, Base):
session = None
def __init__(self):
global Session
self.session = Session()
// init statements
Class Table1(MyBase):
// fields
engine = create_engine("...")
Session = session_maker(engine)
Base = declarative_base()
Base.meta.create_all()
name错误:没有定义名称“Base”,因为我的类在Base
初始化之前扩展了它
Base.meta.create_all()
应该出现在类声明下面。如果我将Base.meta.create_all()
放在类上方,则不会创建任何表main()
,因为我基本上要将此文件导入其他文件中我将engine、Session、Base移动到Base.py&导入它以在Tables.py中定义表在test.py中导入了这两个选项。test.py将调用create_tables(),它在base.py中定义为静态方法。您不能这样做。如果没有
Base
类,则无法创建模型。如果您想分隔行,请将这些行移动到单独的模块并导入该单独的模块,但从根本上说,您无法按要求执行操作。是否有任何方法可以像此类MyBase(AbstractBase,globals.Base)
?没有,因为您尚未定义Base
。因此,我可以移动引擎,会话等,除了Base.meta.create_all()到另一个模块?是。我将Base.meta.create_all()
移动到一个实用函数;我并不总是想执行这一行。