【问题标题】:Display large dataset from Sqlite database in Python wx在 Python wx 中显示来自 Sqlite 数据库的大型数据集
【发布时间】:2012-04-04 23:08:20
【问题描述】:

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

-分页是前 5000 条记录显示在 listctrl 中,然后如果用户单击一个按钮,则显示下一个 5000 条记录.. 以此类推.. 或者 - 当用户向下滚动 listctrl 时,它会不断填充新数据..

我将如何实现这些概念之一?提前感谢您的帮助!

【问题讨论】:

    标签: python sqlite wxpython wxwidgets


    【解决方案1】:

    使其成为the docs 中所述的虚拟控件。列表视图将根据需要调用回调,以请求显示的特定行。

    【讨论】:

      【解决方案2】:

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

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

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

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

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

      【讨论】:

      • 我正在寻找一位导师,我会付钱教我一些这些东西(通过 webex)。我自己完成这些东西需要很长时间,我需要一些指导.. obv 支付。你有兴趣吗?
      • 很抱歉,我太忙了,不能当你的导师。我相信你会在你身边找到一个擅长 wxPython 的人。感谢您的提问;-)
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2011-08-03
      • 2017-09-20
      • 1970-01-01
      • 1970-01-01
      • 2013-10-06
      • 2015-04-11
      • 2012-10-16
      相关资源
      最近更新 更多