2017-04-04 5 views
0

私はPythonでMySqlデータベースのデータを分析しています。私は約200,000行のデータをデータベースに照会してから、Pandasを使ってPythonで分析します。私はしばしば、同じデータに対してさまざまな変数やパラメータなどを変更して、多くの繰り返しを行います。私はプログラムを実行するたびに、私はリモートデータベース(約10秒のクエリ)を照会し、プログラムが終了するとクエリ結果を破棄します。最後のクエリの結果をローカルファイルに保存し、クエリが同じかどうかを確認するためにプログラムを実行するたびにチェックし、保存された結果を使用したいと思います。私はcsvにパンダのデータフレームを書き込むことができたと思いますが、これを行うにはより簡単で簡単な方法がありますか?すぐに再利用できるようにMySqlクエリ結果を保存する

+0

200Kは大量のデータではありません。反復処理は常に*遅いですが、これはデータのクエリ、レポートまたは分析に使用されない理由です。適切に設計されたアプリケーションによって生成されたデータベースレポートは、処理前にすべてのデータをメモリにロードしません。反復なしで必要な結果を返す適切なクエリとインデックスを作成するか、スキーマが分析に適した別のレポートデータベースを作成します。たとえば、スタースキーマ –

+0

良い計画のようです。それをローカルファイルに書き込み、次にファイルを読み込みます。もっと簡単なことは考えられない。 – RobertB

+0

@RobertB実際には悪くて遅いです。どのような種類の最適化されたアクセスも使用しない繰り返しよりも、セットベースの操作を高速に実行できるデータベースを使用している場合、メモリ内で繰り返し処理するのはなぜですか? 10秒後に、データベースは* final *結果を生成するはずです。わずか200Kの行です –

答えて

0

何らかの理由でMySQL Query Cacheが役に立たない場合は、最新の結果セットをHDF5フォーマットまたはフェザーフォーマットで保存することをお勧めします。どちらのフォーマットもかなり高速です。あなたはここにいくつかのデモやテストを見つけることがあります。

https://stackoverflow.com/a/37929007/5741205

https://stackoverflow.com/a/42750132/5741205

https://stackoverflow.com/a/42022053/5741205

0

ただ、ファイルへのデータフレームを書き込むためにピクルスを使用して、(「化したりunpickle化したり」)それをリードバックします。

https://docs.python.org/3/library/pickle.html

これは、 "簡単な方法" になります。