1

我有一张桌子, posts.

其中包括:

id = db.Column(db.Integer, primary_key=True)
title = db.Column(db.String(200))
content =  db.Column(db.Text())
time = db.Column(db.DateTime)

这就是我导航到此 url 时想要实现的目标。

/allposts

posts on 01-01-2013
 - post 1
 - post 2
 - post 3 

posts on 01-02-2013
 - post 4
 - post 5
 - post 6

等等。

我已经尝试过 group by 但我无法实现我上面解释的内容。

我正在使用 sqlalchemy 和烧瓶 python 框架。

同时提供 raw 和 sqlalhemy 查询会更好,所以我可以在这里围绕一些概念。

谢谢!

4

1 回答 1

1

I would not do it in a query, but rather create desired grouping on the python side:

# get desired posts (add your filters etc)
posts = session.query(Post).order_by(Post.time)

# create a dictionary, where key is the date(-only), and values are the posts of that day
from collections import defaultdict
grouped = defaultdict(list)
for post in posts:
    dat = post.time.date()
    grouped[dat].append(post)

# iterate over new grouped structure
for dat, posts in sorted(grouped.items()):
    print dat
    for post in posts:
        print '  ', post
于 2013-04-16T08:31:19.377 回答