首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Python peewee:在连接之前,如何在一列上选择不同的值?

Python peewee:在连接之前,如何在一列上选择不同的值?
EN

Stack Overflow用户
提问于 2020-04-03 01:53:48
回答 2查看 603关注 0票数 0

在使用python ORM peewee在第一个表的一列上只选择了不同的值之后,我尝试连接第一个表(PageVisits)上的第二个表(PageLikes)。

在纯SQL中,我可以这样做:

代码语言:javascript
运行
复制
SELECT DISTINCT(pagevisits.visitor_id), pagelikes.liked_item FROM pagevisits
INNER JOIN pagelikes on pagevisits.visitor_id = pagelikes.user_id

在peewee with python中,我尝试过:

代码语言:javascript
运行
复制
query = (Page.select(
         fn.Distinct(Pagevisits.visitor_id),
         PageLikes.liked_item)
         .join(PageLIkes)

这给了我一个错误:distinct() takes 1 positional argument but 2 were given

我可以并且已经在peewee中使用distinct的唯一方法是:

代码语言:javascript
运行
复制
query = (Page.select(
         Pagevisits.visitor_id,
         PageLikes.liked_item)
         .distinct()

这似乎不适用于我的场景。

那么,在我使用peewee连接另一个表之前,如何根据一列在一个表中只选择不同的值呢?

EN

回答 2

Stack Overflow用户

发布于 2020-04-04 08:12:49

我认为您不应该以这种方式使用fn.DISTINCT()遇到错误。我很好奇能看到完整的回溯。在我的本地测试中,运行如下代码没有任何问题:

代码语言:javascript
运行
复制
query = (PageVisits
         .select(fn.DISTINCT(PageVisits.visitor_id), PageLikes.liked_item)
         .join(PageLikes))

它生成的SQL等同于您想要的东西。我用的是最新的peewee code btw。

票数 1
EN

Stack Overflow用户

发布于 2020-04-03 16:59:49

正如Papooch所建议的,在模型上调用distinct似乎是可行的:

代码语言:javascript
运行
复制
distinct_visitors = (Pagevisits
                            .select(
                                Pagevisits.visitor_id.distinct().alias("visitor")
                            )
                            .where(Pagevisits.page_id == "Some specifc page")
                            .alias('distinct_visitors')
                            )


query = (Pagelikes
         .select(fn.Count(Pagelikes.liked_item),
         )
         .join(distinct_visitors, on=(distinct_visitors.c.visitor = Pagelikes.user_id))
         .group_by(Pagelikes.liked_item)
         )
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60997944

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档