【发布时间】:2021-11-10 21:11:37
【问题描述】:
我一直在尝试编写一个 peewee 选择查询,它会生成一个包含 2 个计数的表(一个是与彩票相关的奖品数量,一个是与彩票相关的包裹数量),以及Lottery 模型中的字段。
我设法编写了 1 个计数有效的选择查询(见下文),然后我不得不将 ModelSelects 转换为列表并手动加入它们(我认为这很 hacky)。
我确实设法编写了一个连接结果的选择查询,但它会将包裹数乘以奖品数(我已经丢失了该查询)。
我也尝试过使用 .switch(Lottery) 但我没有任何运气。
query1 = (Lottery.select(Lottery,fn.count(Package.id).alias('packages'))
.join(LotteryPackage)
.join(Package)
.order_by(Lottery.id)
.group_by(Lottery)
.dicts())
query2 = (Lottery.select(Lottery.id.alias('lotteryID'), fn.count(Prize.id).alias('prizes'))
.join(LotteryPrize)
.join(Prize)
.group_by(Lottery)
.order_by(Lottery.id)
.dicts())
lottery = list(query1)
query3 = list(query2)
for x in range(len(lottery)):
lottery[x]['prizes'] = query3[x]['prizes']
虽然上面的代码有效,但有没有更简洁的方法来编写这个查询?
【问题讨论】:
标签: peewee