SqlAlchemy Group Concat和OrderBy

2024-06-16 11:01:28 发布

您现在位置:Python中文网/ 问答频道 /正文

movies_on_date = session.query(movies_showing,
                                       movies,
                                       func.group_concat(movies_showing.movie_showtime)\
                                            .label("showtimes"))\
                                            .filter(movies_showing.date == movie_date,
                                                    movies.movie_title == movies_showing.movie_title) \
                                            .group_by(movies_showing.movie_title)\
                                            .all()

我们怎么做一个小组会议和订购他们?在

我试过:

^{pr2}$

以及:

func.group_concat(movies_showing.movie_showtime.asc())

但这两种方法似乎都不管用。我们如何做到这一点?在


Tags: datetitleonsessiongroupmoviesmoviefilter
2条回答

.op是你的朋友,http://docs.sqlalchemy.org/en/latest/core/sqlelement.html#sqlalchemy.sql.operators.Operators.op

func.group_concat(movies_showing.op('ORDER BY')(movies_showing.movie_showtime.asc())

我认为这是sqlalchemy代码中的一个错误,因为他们在生成的SQL中省略了“ORDER BY movie\u showtime”,但这就是解决问题的方法。在

我假设您的group_concat已经在工作,您只想向查询添加排序。如果是这样,我想您可以使用您创建的"showtimes"标签作为排序参数,如下所示:

https://stackoverflow.com/a/15557759/1216837

所以我认为可以像这样稍微修改一下查询:

from sqlalchemy import desc

... 
.group_by(movies_showing.movie_title)\
.order_by(desc('showtimes')).all()
.all()

相关问题 更多 >