0

我有一个文件EE_log_declarative.py,其中包含声明的所有类,由 生成sqlacodegen engine --outfile declarative_model.py,如下所示,它导入所有数据类型作为类,如 BigInteger、Boolean、ForeignKey、String...

from sqlalchemy import BigInteger, Boolean, ForeignKey, String

Base = declarative_base()
metadata = Base.metadata

class DataProvider(Base):
    __tablename__ = 'data_provider'
    ...

class DatePattern(Base):
    __tablename__ = 'date_pattern'
    ...

我的问题是:我如何只获取具有关联表名的类?

要在一个类定义中获取类对象,目前我正在做,它可以工作:

EE_log_declarative.Base.metadata.bind = engine
DBSession = sessionmaker()
DBSession.bind = engine
session = DBSession()

data_provider_account_object =session.query(EE_log_declarative.DataProvider).all()
date_pattern_object = session.query(EE_log_declarative.DatePattern).all()

这个想法是动态获取类对象,与声明性一样多的类,但只构建具有表名的类对象。

for x in dir(EE_log_declarative):
        attributes = getattr(EE_log_declarative, x)
        is_class = isclass(attributes)
        if is_class:
            try:
                object = session.query(EE_log_declarative, x).all()
                all_class.append(object)
            except:
                pass

基本上,在最新的函数中,我只想附加具有关联表名的类对象,但它并没有真正起作用,因为 x 作为字符串传递。

4

0 回答 0