Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
数据库选择和日期时间排序(实时Python仪表板)_Python_Database_Real Time_Selection - Fatal编程技术网

数据库选择和日期时间排序(实时Python仪表板)

数据库选择和日期时间排序(实时Python仪表板),python,database,real-time,selection,Python,Database,Real Time,Selection,我有一个用于实时更新和最新通知的仪表板 假设这是一个博客系统,您可以在其中订阅作者的帖子和评论。 然后,我希望在我的仪表板中显示2种类型的通知,按插入时间排序: 最后的帖子 最后评论 想象一下,当我加载仪表板时,我只想显示10个更新(稍后通过ajax升级)。我应该如何查询数据库以及如何对结果进行排序 我曾考虑过查询两个表(帖子和评论)中我订阅的数据,将这些数据添加到列表中,并对datetime的结果进行排序,然后返回最后10个,但我觉得这不是一个很好的解决方案,因为如果这些表(和我的订阅)开始增

我有一个用于实时更新和最新通知的仪表板

假设这是一个博客系统,您可以在其中订阅作者的帖子和评论。 然后,我希望在我的仪表板中显示2种类型的通知,按插入时间排序:

  • 最后的帖子
  • 最后评论
  • 想象一下,当我加载仪表板时,我只想显示10个更新(稍后通过ajax升级)。我应该如何查询数据库以及如何对结果进行排序

    我曾考虑过查询两个表(帖子和评论)中我订阅的数据,将这些数据添加到列表中,并对datetime的结果进行排序,然后返回最后10个,但我觉得这不是一个很好的解决方案,因为如果这些表(和我的订阅)开始增长,则需要花费大量时间进行排序


    您对此问题的答案/想法是什么?

    通过降低插入时间并将结果限制为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]
    

    您是否正在使用一个具有ORM的web框架(比如Django)?我在Django做过类似的事情,大约有一百万行,数据库检索不是一个瓶颈。我正在使用web2py和DAL(支持MySQL)和pymongo(支持MongoDB),如果我下面有一个load more按钮,它会给我接下来的10个更新呢?使用该解决方案将丢失一些更新。为了确保没有丢失任何内容,您应该将“上次看到的时间戳”传递给“下一个”视图,然后重复相同的步骤,只需在创建的位置添加一个等价的
    。根据是否传递时间戳,您可能有一个函数同时执行这两项操作。