[英]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.