0

pickleおよびdbmpython モジュールの学習に取り組んでいます。dbm データベースに接続し、データとピクルされた情報を書き込むコードを書きました。

import dbm
import pickle
class PickleDB:
    def set_dbname(self):
        self.db = dbm.open("pickle", "n")
    def get_data(self):
        self.raw_data = input("Enter your raw data")
        self.pickled_data = pickle.dumps(self.raw_data)
    def write_to_db(self):
        self.db["Raw"] = self.raw_data
        self.db["Pickled"] = self.pickled_data
pickled_db = PickleDB()
pickled_db.set_dbname()
pickled_db.get_data()
pickled_db.write_to_db()

プログラムの実行中はすべて問題なく動作しますが、データベースにアクセスしようとすると問題が発生します。キーは使用できません。

>>> db = dbm.open("pickle", "n")
>>> db["Raw"]
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
KeyError: 'Raw'
>>>  db.keys()
[]

どうしてこれなの?データがデータベースに書き込まれないのはなぜですか?

4

1 に答える 1

0

問題は、オプション「n」でデータベースを開くと、データベースが消去されることです。からpydoc dbm:

'n' は常に新しいデータベースを作成します。

shelve パッケージを見てみるとよいでしょう。あなたが何をしようとしているのかを私が理解していれば、「棚上げ」はすでにあなたのためにそれを行っています.

于 2012-07-05T18:46:08.090 に答える