SQLAlchemy在单独的文件中反映类



我是炼金术新手,所以如果这是一个基本问题,请原谅我。我有表类反映从现有的数据库,我想将它们存储在一个单独的文件。现在我的类在我的主应用程序的顶部:

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做实验,但没有效果。这个我有点迷路了

例如,我们有一个目录结构如下:

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
}

将这些表导入到主文件中就像上面那样。您可以通过同样的方式导入变量(引擎等)和类。

相关内容

  • 没有找到相关文章

最新更新