在pythonwx中显示Sqlite数据库中的大型数据集
我有一个大型数据集(日志数据),它存储在SQLite3数据库中。我使用Wx.listctrl创建了一个Python GUI,用于显示查询中的数据。它适用于少量数据,但显然挂起在较大的数据集上。。因此,我想实施两件事中的一件: -分页是在listctrl中显示前5000条记录,然后如果用户单击按钮,将显示下5000条记录。。诸如此类。。 或 -当用户向下滚动列表时,它会不断填充新数据在pythonwx中显示Sqlite数据库中的大型数据集,python,sqlite,wxpython,wxwidgets,Python,Sqlite,Wxpython,Wxwidgets,我有一个大型数据集(日志数据),它存储在SQLite3数据库中。我使用Wx.listctrl创建了一个Python GUI,用于显示查询中的数据。它适用于少量数据,但显然挂起在较大的数据集上。。因此,我想实施两件事中的一件: -分页是在listctrl中显示前5000条记录,然后如果用户单击按钮,将显示下5000条记录。。诸如此类。。 或 -当用户向下滚动列表时,它会不断填充新数据 我将如何实现这些概念之一?提前感谢您的帮助 将其设置为虚拟控件,如中所述。listview将根据需要调用回调,以请
我将如何实现这些概念之一?提前感谢您的帮助 将其设置为虚拟控件,如中所述。listview将根据需要调用回调,以请求显示的特定行。将其设置为虚拟控件,如中所述。listview将根据需要调用回调,以请求显示的特定行。在不同的场景中,策略将不同。假设您只使用wxPython进行表示,并且您有一个单独的模块/包来处理数据。wxPython控件仅从数据抽象层获取数据 场景一:将所有日志数据加载到内存中,并使用wx.listctrl或wx.listview显示行 场景二:更新wx视图时从数据库获取数据 在场景I中,您只需要设置一个变量来记住UI读取到的位置,或者如果您将日志加载为列表,您甚至可以简单地使用列表滑动。在场景I中,可以通过向下/向上滚动来自动更新视图,因为所有数据都已加载,不会再进行sqlite db连接。在场景II中,通过向下/向上滚动来实现自动更新是一个错误的选择,因为会有太多的db操作-想象一下,您很快向下滚动,期望得到第5000行
在场景II中,您可以设置页面大小并使用“限制/偏移”来获取所需的数据集。为偏移量保留另一个变量。使用变量page_size和offset,您可以简单地获取数据并更新wx视图。这种情况特别适合限制内存使用。我不知道您的日志有多大,但毕竟将其全部加载到内存中不是一个好主意,因为日志不断增长,您可能还需要同时加载其他相对较大的数据集。在不同的场景中,策略会有所不同。假设您只使用wxPython进行表示,并且您有一个单独的模块/包来处理数据。wxPython控件仅从数据抽象层获取数据 场景一:将所有日志数据加载到内存中,并使用wx.listctrl或wx.listview显示行 场景二:更新wx视图时从数据库获取数据 在场景I中,您只需要设置一个变量来记住UI读取到的位置,或者如果您将日志加载为列表,您甚至可以简单地使用列表滑动。在场景I中,可以通过向下/向上滚动来自动更新视图,因为所有数据都已加载,不会再进行sqlite db连接。在场景II中,通过向下/向上滚动来实现自动更新是一个错误的选择,因为会有太多的db操作-想象一下,您很快向下滚动,期望得到第5000行
在场景II中,您可以设置页面大小并使用“限制/偏移”来获取所需的数据集。为偏移量保留另一个变量。使用变量page_size和offset,您可以简单地获取数据并更新wx视图。这种情况特别适合限制内存使用。我不知道你的日志有多大,但毕竟把它全部加载到内存中不是一个好主意,因为日志不断增长,你可能还需要同时加载其他相对较大的数据集。我正在寻找一位导师,我会付钱教我一些这方面的东西(通过webex)。。我一个人完成这件事花了我很长时间,我需要一些指导。。obv用于支付。你有兴趣吗?很抱歉,我太忙了,不能做你的家教。我相信你会在你身边找到一个擅长wxPython的人。谢谢你的提问;-)我正在寻找一个导师,我将支付教我一些这方面的东西(通过webex)。。我一个人完成这件事花了我很长时间,我需要一些指导。。obv用于支付。你有兴趣吗?很抱歉,我太忙了,不能做你的家教。我相信你会在你身边找到一个擅长wxPython的人。谢谢你的提问;-)