一部の小規模な Python アプリケーションでは、リレーショナル データベースが必要ない場合、名前と値のペアを保存するために永続ディクショナリを使用すると便利です。これは Python ディクショナリとよく似ています。主な違いは、データの読み取りと書き込みが行われることです。ディスク上にあります。もう 1 つの違いは、dbm のキーと値が文字列型である必要があることです。
1. dbm モジュールを選択します
Python は多くの dbm モジュールをサポートしていますが、残念ながら、各 dbm モジュールによって作成されたファイルには互換性がありません。
次の表に、これらのモジュールを示します。
モジュールの説明
dbm 最適な dbm モジュールを選択します
dbm.dumb は、dbm ライブラリのシンプルだが移植可能な実装を使用します
dbm.gnu は、GNU dbm ライブラリを使用します
一般に、 dbm ライブラリに特別な高度な機能がない限り、dbm モジュールを使用してください。
2. 永続辞書を作成します
import dbm db = dbm.open('Bookmark', 'c') #添加选项 db['MyBlog'] = 'jonathanlife.sinaapp.com' print(db['MyBlog']) #保存,关闭 db.close()
open 関数には dbm を開く 3 つの方法があります:
フラグの使用法
C 読み取りおよび書き込みのためにファイルを開き、必要に応じてファイルを作成します
W 読み取りのためにファイルを開きますファイルが存在しない場合、ファイルは作成されません
N は読み取りと書き込みのためにファイルを開きますが、常に新しい空のファイルが作成されます
を表す別のオプションの引数を渡すことも可能ですUNIX ファイル権限のセットを保持するモードについては、ここでは詳しく説明しません。
3. 永続辞書にアクセスします
open 関数から返されたオブジェクトは辞書オブジェクトとみなされます。値のアクセス方法は以下のとおりです:
db[‘key’] = ‘value’ value = db[‘key’] #删除值: del db[‘key’] #遍历所有key: for key in db.keys(): #your code here
コード例:
import dbm #open existing file db = dbm.open('websites', 'w') #add item db['first_data'] = 'Hello world' #verify the previous item remains if db['first_data'] != None: print('the data exists') else: print('Missing item') #iterate over the keys, may be slow for key in db.keys(): print("Key=",key," value=",db[key]) #delete item del db['first_data'] #close and save to disk db.close()