我想在架子上存储一个整数密钥。但是当我尝试将整数密钥存储在搁置中时,它给了我一个错误
Traceback (most recent call last):
File "./write.py", line 12, in
data[id] = {"Id": id, "Name": name}
File "/usr/lib/python2.5/shelve.py", line 124, in __setitem__
self.dict[key] = f.getvalue()
File "/usr/lib/python2.5/bsddb/__init__.py", line 230, in __setitem__
_DeadlockWrap(wrapF) # self.db[key] = value
File "/usr/lib/python2.5/bsddb/dbutils.py", line 62, in DeadlockWrap
return function(*_args, **_kwargs)
File "/usr/lib/python2.5/bsddb/__init__.py", line 229, in wrapF
self.db[key] = value
TypeError: Integer keys only allowed for Recno and Queue DB's
我的代码:
#!/usr/bin/python
import shelve
data = shelve.open("data.txt")
ans = 'y'
while ans == "y":
id = input("Enter Id : ")
name = raw_input("Enter name : ")
data[id] = {"Id": id, "Name": name}
ans = raw_input("Do you want to continue (y/n) ? : ")
data.close()
我的程序有问题吗?或者 shelve 根本不支持整数键?
Edit 1 :
在程序中,我试图将 Id 和 Name 的字典存储在另一个以 Id 作为键的字典中。然后尝试将其存储在文件中。
我需要将 Recno 或 Queue DB 与 shelve 一起使用吗?我是初学者,事情很混乱。
如果我的问题不清楚,请告诉我。
Thanks.