gpt4 book ai didi

python - sqlalchemy 过滤连接模型属性的结果

转载 作者:太空宇宙 更新时间:2023-11-04 08:19:42 26 4
gpt4 key购买 nike

我有一个型号 X 和一个型号 Y。

Y 包含对 X.id 的外键引用,以及属性 x 可用的相关 X 条目的实例。

x_id = Column(Integer, ForeignKey('xtable.id'))    
x = relationship('X')

X 也有一个 bool 属性 'publish'。

在 Y 上执行查询,我如何将结果过滤为 x.publish 为 True 的结果;

我试过这样做:

DBSession.query(Y).filter_by(x.publish = True).all() 

但这不起作用,我收到一条错误消息,指出关键字不能是表达式。我查看了 sql alchemy 文档以寻找解决方案,但我似乎找不到我要找的东西。有什么建议吗?

最佳答案

您需要在查询中添加一个 join 到类 X 并使用 filter 而不是 filter_by:

qry = DBSession.query(Y)
qry = qry.join(X)
qry = qry.filter(X.publish == True)
qry.all()

或一次性:

DBSession.query(Y).join(X).filter(X.publish == True).all()

参见 this question关于使用 filterfilter_by 的区别。

关于python - sqlalchemy 过滤连接模型属性的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7703008/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com