[英]Python Pickle Not Storing Data
我有一個包含{姓名:電子郵件地址}的字典
我有一個單獨的.py來腌制這個:
emailDict = {'Kilizo': 'info%40kilizo.com' , 'about': 'about%40google.com' }
# write python dict to a file
output = open('orig.pkl', 'wb')
pickle.dump(emailDict, output)
output.close()
這是有效的,因為它將原始字典腌制為orig.pkl
然后在我的主網站上,我有:
# Pickling # Deleting Old Temp & Creating New One
tmp = os.path.isfile("tmp.pkl")
if tmp == True:
os.remove("tmp.pkl")
shutil.copyfile("orig.pkl", "tmp.pkl")
# Pickling # Loading File
pkl_file = open('tmp.pkl', 'rb')
emailDict = pickle.load(pkl_file)
pkl_file.close()
然后,我在網站上有兩個表單輸入,其中包含電子郵件地址和相應的名稱
#Processing input
emailAdded = fs.getvalue('emailAdd')
nameAdded = fs.getvalue('nameAdd')
if emailAdded != None or nameAdded != None:
print emailAdded
print nameAdded
emailDict[nameAdded] = emailAdded
else:
print "Please enter a name & email address"
output = open('tmp.pkl', 'wb')
pickle.dump(emailDict, output)
output.close()
print emailDict
但是,沒有新數據存儲到tmp.pkl或orig.pkl
有什么想法讓我開始?
謝謝
有什么想法讓我開始?
使用pickle作為網站的動態更新數據存儲並不是很好。 為了避免並發問題,您必須實現一個鎖定文件機制,並希望訪問該文件的所有其他內容都會尊重它。
我強烈建議您使用支持並發訪問的數據存儲。 例如數據庫。
閱讀: http : //en.wikipedia.org/wiki/Concurrency_control
你可以用sqlite輕松開始。 請參閱: http : //docs.python.org/library/sqlite3.html
python shelve模塊負責為您提供類似字典的對象,但是當您提出要求時,它還會將對象存儲並存儲到文件中。 正如其他人所說,如果要經常更新,你想使用某種數據庫,但為了易於使用,很難擊敗擱置模塊。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.