在sqlalchemy中查询特定于类型关系的列

2024-10-02 12:35:41 发布

您现在位置:Python中文网/ 问答频道 /正文

我有一个包含一些文本字段和许多多对多关系的表。我在查询字段的时遇到问题。下面是我如何查询表:

with db.session(raise_err=True) as session:
    result = session.query(
        ClientKnowledge
    ).options(
        *[defaultload(getattr(ClientKnowledge, table.table.name))
          .load_only(KqFactory().get_tables([table.table.name])[0].get_pk().name)
          for table in ClientKnowledge.__mapper__.relationships]
    ).filter(
        ClientKnowledge.id == 1
    )

这很好,SQLAlchemy为我做了所有的连接,并且很好地使用了lazy=joinedload参数。在

当我在查询参数中指定字段时,我必须自己执行所有联接,但我不希望这样;还尝试使用with_entities()并从关系的另一端进行查询,但得到的结果相同。在

有没有一种方法可以只查询特定字段而不丢失SQLAlchemy为我进行连接的能力?在

PS:我不能给出一个完整的工作示例,因为我所有的表都是动态生成的。如果需要更多的上下文,请告诉我。在

编辑:

下面是我的表的一个示例

^{pr2}$

我想要的是能够查询ClientKnowledge.rel_字段1. 在

我试过:

session.query(ClientKnowledge.rel_field1)

但我必须自己去做。在


Tags: name文本示例db参数getsqlalchemy关系

热门问题