SQLAlchemy将类反映在单独的文件中

时间:2014-07-03 13:14:44

标签: python class reflection sqlalchemy

如果这是一个基本问题,我是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无济于事。我在这个上有点迷失。

1 个答案:

答案 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您可以以相同的方式导入变量(引擎等)和类。

相关问题