gpt4 book ai didi

python - SqlAlchemy如何查询列A==a和B==b和A==b和B==a

转载 作者:太空宇宙 更新时间:2023-11-03 15:52:40 26 4
gpt4 key购买 nike

我有一个包含 enemy_onefight_idenemy_two 的表。

问题是,有时 enemy_two 会变成 enemy_one,反之亦然。

我能做到:

session.query(Fight.fight_id).filter(Fight.enemy_one=='Jack', Fight.enemy_two=='Fat Chinese').all()

然后:

session.query(Fight.fight_id).filter(Fight.enemy_one=='Fat Chinese', Fight.enemy_two=='Jack').all()

这样我就可以得到所有的战斗,但是有一种方法可以将这两个查询绑定(bind)在一起吗?

最佳答案

使用 in_ 子句:

def get_fights(enemy_one, enemy_two):
return (
session
.query(Fight)
.filter(Fight.enemy_one.in_([enemy_one, enemy_two]))
.filter(Fight.enemy_two.in_([enemy_one, enemy_two]))
.filter(Fight.enemy_one != Fight_enemy_two)
)

使用 or_ 子句:

def get_fights(enemy_one, enemy_two):
return (
session
.query(Fight)
.filter(or_(
and_(Fight.enemy_one == enemy_one, Fight.enemy_two == enemy_two),
and_(Fight.enemy_one == enemy_two, Fight.enemy_two == enemy_one),
))
)

关于python - SqlAlchemy如何查询列A==a和B==b和A==b和B==a,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41129518/

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