I want to store an integer key in shelve. But when I try to store integer key in shelve it give me an error

```

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

```

**My 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()

```

Is something wrong in my program or shelve does not supports integer keys at all ?

---

**Edit 1 :**

In program I am trying to store a dictionary of Id and Name inside another dictionary with Id as a key. And then trying to store it in a file.

Do I need to use Recno or Queue DB's along with shelve? I am a beginner and things are confusing.

Let me know if I am not clear with my question.

Thanks.