Je souhaite stocker une clé entière dans shelve. Mais lorsque je tente de stocker la clé entier shelve il me donne une erreurComment puis-je prendre des clés entières dans shelve?
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
Mon code:
#!/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()
quelque chose de mal dans mon programme ou SHELVE ne supporte pas les clés entières du tout?
Edit 1:
Dans le programme que je suis en train de stocker un dictionnaire de voyage et de nom dans un autre dictionnaire avec Id comme une clé. Et puis essayer de le stocker dans un fichier.
Ai-je besoin d'utiliser les DB Recno ou Queue avec shelve? Je suis un débutant et les choses sont confuses. Faites-moi savoir si je ne suis pas clair avec ma question.
Merci.
"shelve ne prend pas en charge les touches entières?" Pourquoi tu demandes ça? Votre message d'erreur indique que "les clés entières ne sont autorisées que pour les DB Recno et Queue". Clairement, les clés entières ** sont ** supportées par les DB Recno et Queue. Que demandez-vous? –
@ S.Lott Je pensais que j'avais besoin de mettre en œuvre Recno ou Queue DB avec shelve, que la raison pour laquelle j'ai demandé "Quelque chose ne va pas dans mon programme ou shelve ne prend pas en charge les touches entières?" – Searock
@ S.Lott J'ai mis à jour ma question. – Searock