如果这是一个基本问题,我是Alchemy的新人,请原谅我。我有从现有数据库反映的表类,我想将它们存储在一个单独的文件中。现在我的课程位于我的主要应用程序的顶部:
engine = create_engine('mysql://'+user+':'+passwd+'@'+database, echo = False)
meta_data = MetaData(bind = engine, reflect = True)
Base = declarative_base()
class Table_1(Base):
__table__ = Table('node_lmp', meta_data, autoload=True)
def __init__(self, name):
self.name = name
class Table2(Base):
__table__ = Table('type_lmp', meta_data, autoload=True)
def __init__(self, data, name):
self.data = data
self.name = name
Rest of application...
我不确定如何将这些类导出到单独的模块,因为它们依赖于已建立连接的元数据。
我尝试过试验DeferredReflection无济于事。我在这个上有点迷失。
答案 0 :(得分:0)
例如,让我们有一个像这样的目录结构:
MainDir/
__init__.py
main.py
modelsDir/
__init__.py
meta.py
modelA.py
如果你想用几个文件构建python程序,你需要__ init__.py -file,把它留空。它打包其他python文件,以便你的main.py可以使用它们,并且它们是可调用的。
在你的meta.py中你可以使用那些引擎,meta_data和Base变量,因为它们在你的主文件中。在modelA.py中,您可以像这样调用这些元数据:
from MainDir.modelsDir.meta import {
engine,
meta_data,
Base
}
将这些表导入主文件就像上面一样。从这里查找有关导入内容的更多信息:https://docs.python.org/2/tutorial/modules.html您可以以相同的方式导入变量(引擎等)和类。