0
我一直在努力學習pickle
和dbm
python模塊。我寫了一些連接到dbm數據庫的代碼,並寫入數據和醃製信息。爲什麼不將數據寫入數據庫? (DBM,Python 3.2)
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()
[]
這是爲什麼?爲什麼數據沒有寫入數據庫?
這與泡菜沒有任何關係(酸洗不涉及「原始」鍵);將它縮小爲適當標題的最小測試用例(對於您而言,因爲這是調試過程中的一課,所以稍後對其他用戶會有所幫助)。對於上面提到的問題,我正在關閉「太本地化」。 – 2012-05-09 21:55:44
在程序退出之前,可能需要顯式關閉db。請參閱[文檔]中的示例(http://docs.python.org/py3k/library/dbm)。 –