2012-04-04 30 views
1

SQLite3データベースに格納されている大きなデータセット(ログデータ)があります。クエリのデータを表示するWx.listctrlを使用してPython GUIを作成しました。少量のデータに対してはうまく動作しますが、大きなセットでは明らかにハングします。したがって、次の2つのうちの1つを実装したいと思います。Python wxのSqliteデータベースから大きなデータセットを表示

ページングは​​listctrlに表示され、ボタン次の5000はそう..に示されており、その..に OR は、これらの概念の

どのように実装し1 ..そのは、常に新しいデータで移入listctrlダウンユーザーがスクロールを-as?助けを前にありがとう!

答えて

1

the docsで説明されているように仮想コントロールにします。リストビューは、表示されている特定の行を要求するために必要に応じてコールバックを呼び出します。

0

異なるシナリオでは、戦略が異なります。 WxPythonをプレゼンテーション目的で使用するだけで、データを扱う別のモジュール/パッケージがあるという前提があります。 wxPythonコントロールは、データ抽象化レイヤーからのみデータを取得します。

シナリオI:すべてのログデータをメモリにロードし、wx.listctrlまたはwx.listviewを使用して行を表示します。

シナリオII:wxビューが更新されたときにデータベースからデータをフェッチします。

シナリオIでは、UIが読み取った位置を記憶するために変数を設定するだけで済みます。また、ログをリストとしてロードする場合は単にリストスライディングを使用することもできます。すべてのデータがロードされ、それ以上のsqlite db接続が作成されないため、シナリオIでスクロールダウン/スクロールすることによってビューを自動的に更新することができます。シナリオIIでスクロールダウンすることで自動更新を実装するのは悪い選択です。データベース操作が多すぎるからです.5000行目を待つことを非常に迅速にスクロールすることを想像してください。

シナリオIIでは、ページサイズを設定し、LIMIT/OFFSETを使用して必要なデータセットを取得できます。オフセット番号には別の変数を保持します。変数page_sizeとoffsetを使用すると、単にデータをフェッチしてwxビューを更新することができます。このシナリオは、特にメモリの使用を制限するのに適しています。私はあなたのログがどれほど大きいかわかりませんが、ログが増え続けるので、すべてのデータをメモリにロードするのは良い考えではありません。同時に、他の比較的大きなデータセットをロードする必要があるかもしれません。

+0

私はこの物のいくつかを(webex経由で)教えるために支払う家庭教師を探しています。これは自分自身でこのことをやっていくために私に長い道のりをしています。 。興味がありますか? – user1314011

+0

私はあなたの先生になるには余りにも忙しいと申し訳なく思っています。 wxPythonに優れているあなたの横に誰かがいることを確信しています。質問してくれてありがとう ;-) – user866903

関連する問題