在Python wx中显示Sqlite数据库中的大型数据集



我有一个存储在SQLite3数据库中的大数据集(日志数据)。我使用Wx.listctrl创建了一个Python GUI,用于显示查询中的数据。它适用于少量数据,但显然适用于较大的数据集。。因此,我想实现两件事中的一件:

-如果前5000条记录显示在listctrl中,然后如果用户单击按钮,则显示下5000条。。等等。。或-当用户向下滚动列表时,它不断地填充新数据。。

我将如何实现其中一个概念?提前感谢您的帮助!

如文档中所述,使其成为一个虚拟控件。listview将根据需要调用回调,以请求显示的特定行。

在不同的场景中,策略会有所不同。假设您只是将wxPython用于演示目的,并且您有一个单独的模块/包来处理数据。wxPython控件仅从数据抽象层获取数据。

场景一:将所有日志数据加载到内存中,并使用wx.listctrl或wx.listview来显示行。

场景二:当wx视图更新时,从数据库中获取数据。

在场景I中,您只需要设置一个变量来记住UI读取到的位置,或者如果将日志加载为列表,您甚至可以简单地使用列表滑动。在场景I中可以通过向下/向上滚动来自动更新视图,因为所有数据都已加载,不会再进行sqlite-db连接。在场景II中,通过向下/向上滚动来实现自动更新将是一个糟糕的选择,因为会有太多的数据库操作——想象一下,你很快就向下滚动,期望得到第5000行?

在场景II中,您可以设置页面大小并使用LIMIT/OFFSET来获得所需的数据集。您可以为偏移编号保留另一个变量。使用变量page_size和offset,您可以简单地获取数据并更新wx视图。这种情况特别适合限制内存使用。我不知道你的日志有多大,但毕竟把所有日志都加载到内存中不是一个好主意,因为日志不断增长,你可能还需要同时加载其他相对较大的数据集。

最新更新