python SQLAlchemy限制结果

2mbi3lxu  于 2022-10-30  发布在  Python
关注(0)|答案(2)|浏览(233)

假设我有一个这样简单数据库

我想使用SQLAlchemy执行这个SQL查询,以便只获得10个最新的结果,这些结果是关于属于某个父对象的具有特定Child_id的玩具的。

toys = Toy.query.filter(Toy.child_id == 77).filter(Child.parent_id == 'parent1').order_by(Toys.id.desc()).limit(limit).all()

但是如果我执行这个,我只得到一个结果。
回应这个问题,我得到

"SELECT toys.id AS toys_id, toys.toy_type AS toy_type FROM toys, children WHERE toys.child_id = 77 ORDER BY records.id DESC LIMIT 10;"

执行这个原始查询,我得到了10个相同的toys结果。
这个父项共有15个子项。如果我将查询限制设为20,则会得到15个相同的玩具结果和5个相同的不同玩具结果。它总是将相同玩具结果的数量作为子项的数量。
所以我猜这和连接表和限制结果有关...

ljsrvy3e

ljsrvy3e1#

解决了。我没有使用连接语句,这就是为什么它没有工作。

toys = (Toy.query
           .join(Child)
           .join(Parent)
           .filter(Parent.name == 'parent1').filter(Toy.child_id == 77)
).limit(10).all()
dohp0rv5

dohp0rv52#

我希望你做类似Session.query(Toys).filter(Child_id == 77).limit(10).all()之类的事情。

相关问题