2011-12-15 4 views
2

私はPythonでフラットファイルの移植可能なキー値ストアを探しています。私はキーのために文字列を使用し、文字列または値のリストを使用します。私はZODBを見ましたが、もっと広く使われてより積極的に開発されているものが欲しいです。 Pythonのdmbモジュールには、システムライブラリやデータベースサーバー(mysqlなど)が必要ですか、それらのファイルに書き込むことはできますか?Pythonでのフラットファイルのキー値ストア

dbmがPythonリストをサポートしていない場合、私はそれをシリアル化できると思いますか?

答えて

3

ご迷惑をおかけして申し訳ありませんが、JSONファイルはうまく処理できませんか?

+0

ご返信ありがとうございます!私は実際にはキー(数千のキー、数十万のルックアップ)に基づいて多くの一定時間ルックアップを行う必要があります。 – oxuser

+0

私は実際に複数のJSONファイルを使用する以外はこれをやり終えました。 – oxuser

+1

grr、なぜこれが下落したのですか? – tedder42

1

shelveモジュールを見ることができます。これは、フードの下でピクルスを使用し、あなたは起動の間に持続するキー値のルックアップを作成することができます。

さらに、との方法を使用したjsonモジュールはおそらくうまくいくでしょう。

+0

あなたの返信いただきありがとうございます!私は棚が信頼性が高くないと聞いています。データが壊れないようにすることは非常に重要です。 – oxuser

+0

@oxuser - あなたはその効果についてのサイト参照ができますか?私はそれに問題を抱えていませんでした。私はモジュールの批評を見直すことに興味がありますが、非常に便利だと思います。 –

+0

確かに:http://stackoverflow.com/questions/4226580/prevent-python-shelve-corruption – oxuser

4

ありsqliteのためのデフォルトのサポートであり、標準ライブラリに含まれていますが、単純化のために使用棚上げすることができます

http://docs.python.org/library/shelve.html

編集:私はこれをテストしたhavent 、あなたのためsoltionかもしれないDBMを買います。 UNIXでは1979年以来のキーバリューデータベースです。

http://docs.python.org/library/anydbm.html#module-anydbmそして、シリアライズが必要な場合はpickleを使用できます。

+0

そうですね、sqliteを見ましたが、一定時間のルックアップを作成する必要があり、キー値ストアが提供するものより多くのニーズがあります。編集:また、私はshelveの信頼性についていくつかの悪いことを聞いたことがあります。 – oxuser

+0

あなたが望むのが永続的なキーストアであれば、Shelveは本当に最も簡単な選択肢です。 pickleに依存していることに注意してください。したがって、pickleableオブジェクトを使用する必要があります。 – hcalves

+0

私は棚が信頼性のために最善ではないと聞きました:http://stackoverflow.com/questions/4226580/prevent-python-shelve-corruption 私はトランザクションサポートで何かをしたいです – oxuser

5

h5pyはHDF5とのPythonインターフェイスです。

In [1]: import h5py 

In [2]: f = h5py.File('test.hdf5', 'w') 

In [3]: f['abc'] = [1, 2, 3] 

In [4]: f['d'] = 'hello' 

In [5]: f.close() 

In [6]: f2 = h5py.File('test.hdf5', 'r') 

In [7]: f2['abc'].value 
Out[7]: array([1, 2, 3]) 

In [8]: list(f2['abc']) 
Out[8]: [1, 2, 3] 

In [10]: f2['d'].value 
Out[10]: 'hello' 
関連する問題