SQLObjectがメモリを激しく消費する

Dell助手に株価取得とデータ蓄積の仕事を任せるようになったが、まだまだ20MBほどのデータベース(件数は30万件オーバー)なのにずいぶん遅いことに気がついた。パフォーマンスモニタを見るとだんだんpythonの消費メモリが増えて行って、最後には「仮想メモリ領域を確保するため」うんぬんかんぬんというエラーメッセージが出力されるようになってしまった。
何か手はないものかと探すと、SQLObjectのメーリングリストに行き会った。

要するに、接続中はクエリーの実行結果?か何かを溜め込んで行ってしまうので、合間を見てキャッシュをクリアしてやるといいよ、ということのようだ。


connection.cache.clear()
なるほどと、データベースに接続する各関数の節目にこれを入れることにする。接続操作をconnectDb()関数に入れていたのでは各関数から呼び出しにくいので、グローバル変数のところに接続関連の処理を移した。
昨日の記述、

ここで前回までと一部変更。データベース接続関数connectDb()を廃止し、冒頭部分でデータベースへの接続を行う(理由後述)

はこういう事情であったということで。