以下是我的文件包含所有Table mapper类。
// 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()
我收到NameError: name 'Base' is not defined
,因为我的课程在Base
初始化之前进行了扩展。
如果我移动引擎创建,会话创建和放大,我可以使它工作。在定义类之上创建基础。但是Base.meta.create_all()
应该出现在类声明之下。如果我将Base.meta.create_all()
放在类之上,则表示没有创建表。
我不想拥有main()
,因为我基本上会在其他文件中导入此文件。
所以,我想在类定义之后保留所有语句(引擎,会话,base和amp_all())。
修改
我将引擎,Session,Base移动到base.py&导入它以定义tables.py中的表。 &安培;在test.py中导入。 test.py将调用create_tables(),它在base.py中定义为静态方法。