私はPythonで数値シミュレーションを行っており、非常に大きなデータオブジェクト(約200 MB)になっています。私はそれらをsqlite3 dbに書き込みます。解像度を上げた後(つまりデータサイズを約20%)、dbに挿入しようとするとメモリエラーが発生します。以前は小さな解像度でうまくいきました。ここでは、コードスニペットです:Pythonで大きな要素をsqlite3に挿入するdb - memory error
def write_to_db(self, filename, dataObject, name) :
connection = sqlite.connect(filename)
cursor = connection.cursor()
cursor.execute("CREATE TABLE pulses (ID INTEGER PRIMARY KEY, name STRING, data BLOB)")
cursor.execute("INSERT INTO pulses(name, data) VALUES (?, ?)", (dataObjectName, sqlite.Binary(pickle.dumps(dataObject))))
connection.commit()
connection.close()
私はWinXPの、1GBのRAM、3ギガバイトのスワップ(および拡張する必要性を入れ替える窓-通知を受け取っていない)、Pythonの2.6の下で働いています。
ご協力いただきありがとうございます。 Tim
SQLiteとほとんどのリレーショナルデータベースは、200 MBのオブジェクトを念頭に置いて設計されていません。それがうまくいっても、ひどいデータベースの断片化を引き起こす可能性があります。私は仕事のために間違ったツールを使用していると思います。 –
ここでは、オブジェクトの酸洗いが問題と思われます。しかし、あなたが私にSQLiteが間違った選択であると言えば、おそらく別のアプローチを試みるべきです。しかし、どちら? – Tim