数据库选择与日期时间排序(实时Python仪表板)
我有一个仪表盘,用来显示实时更新和最新通知。
想象一下,这是一个博客系统,你可以订阅作者的帖子和评论。然后我想在我的仪表盘上显示两种类型的通知,按时间顺序排列:
- 最新帖子
- 最新评论
假设我只想在加载仪表盘时显示10条更新(后续的更新我会通过ajax获取)。我应该如何查询数据库,以及如何对结果进行排序呢?
我考虑过查询两个表(帖子和评论),获取我订阅的数据,把这些数据放到一个列表里,然后按时间排序,最后返回最新的10条。但我觉得这不是一个很好的解决方案,因为如果这些表(以及我的订阅)开始增多,排序会花很多时间。
你对这个问题有什么想法或建议吗?
1 个回答
2
首先,从第一个表中查询数据,按照插入时间从最新到最旧的顺序排列,并限制结果为10条。接着,按照同样的方式从第二个表中查询数据。最后,在Python中将这两个结果合并,并返回前10条数据。
一个Django的例子可能是这样的:
from operator import attrgetter
recent_posts = Post.objects.order_by('-created')[:10]
recent_comments = Comment.objects.order_by('-created')[:10]
both_combined = list(recent_posts) + list(recent_comments)
both_sorted = sorted(both_combined, key=attrgetter('created'), reverse=True)
most_recent = both_sorted[:10]