Hi Jenny,
this is a shelve problem, not a pygr.Data problem or a MySQLdb  
problem.  The error message indicates that the shelve's iterator  
method failed, which caused Pygr to try a fall-back iterator method  
for gdbm (which handles the case where your Python install lacks a  
working bsddb module).  But your shelve's dict is clearly not a gdbm  
index either (thus the attribute error).  There are a couple  
possibilities here:

- the question is why your shelve's iterator method fails.  Please  
test creating a shelve, inserting a bunch of items, closing, re- 
opening, and trying iterating over the items (using iter(), e.g. for k  
in iter(myshelve):).

- perhaps your Python 2.6 lacks a working bsddb? Sometimes it fails to  
compile right on Mac... try the following:
import _bsddb

- perhaps in the location that it is trying to open you have an old  
shelve file from an earlier version of python, which shelve is trying  
to open, and failing due to a version mismatch?  Look for a  
file .pygr_data in that directory and delete it.

-- Chris



On May 2, 2009, at 11:54 PM, Jenny Qing Qian wrote:

> Hi Chris,
>
> I finally had MySQLdb installed on my new Mac.  But, I ran into the  
> following pygr.Data problem:
>
> Python 2.6.2 (r262:71600, Apr 29 2009, 23:07:46)
> [GCC 4.0.1 (Apple Inc. build 5490)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import pygr.Data
> >>> pygr.Data.dir('Bio')
> Traceback (most recent call last):
>   File "<stdin>", line 1, in <module>
>   File "pygr/metabase.py", line 954, in dir
>     download=download))
>   File "pygr/metabase.py", line 821, in dir
>     download=download)
>   File "pygr/metabase.py", line 538, in dir
>     for name in self.db:
>   File "pygr/dbfile.py", line 81, in iter_gdbm
>     k = db.firstkey()
> AttributeError: firstkey
>
> I thought it might have something to do with the MySQLdb, so I did  
> the following test:
>
> [bigmac:~/pygr/pygr] qing% python -i
> Python 2.6.2 (r262:71600, Apr 29 2009, 23:07:46)
> [GCC 4.0.1 (Apple Inc. build 5490)] on darwin
> Type "help", "copyright", "credits" or "license" for more information.
> >>> import MySQLdb
> /Library/Frameworks/Python64.framework/Versions/2.6/lib/python2.6/ 
> site-packages/MySQL_python-1.2.2-py2.6-macosx-10.5-universal.egg/ 
> MySQLdb/__init__.py:34: DeprecationWarning: the sets module is  
> deprecated
>   from sets import ImmutableSet
> >>> mydb = MySQLdb.Connect(db='test')
> cursor = mydb.cursor()
> >>> >>> stmt = "DROP TABLE IF EXISTS COLORS"
> cursor.execute(stmt)>>>
> __main__:1: Warning: Unknown table 'colors'
> 0L
> >>> stmt = """CREATE TABLE COLORS (
>          COLOR varchar(32) DEFAULT '' NOT NULL,
>          NCOLOR INT UNSIGNED NOT NULL AUTO_INCREMENT,
>          PRIMARY KEY (NCOLOR)
> )"""... ... ... ...
> >>> cursor.execute(stmt)
> 0L
> >>> colors = ( ('red',), ('blue',), ('yellow',), )
> stmt = "INSERT INTO COLORS (COLOR) VALUES (%s)"
> cursor.executemany(stmt, colors)
> >>> >>> 3L
> >>>
> >>> stmt = "select NCOLOR, COLOR from COLORS"
> cursor.execute(stmt)
> resultSet = cursor.fetchall()
> >>> 3L
> >>> >>> for i, color in resultSet:
>          print "Color number",i,"is", color
>
> mydb.close()... ... Color number 1 is red
> Color number 2 is blue
> Color number 3 is yellow
>
> So, the MySQLdb module works fine.
>
> Have you seen this AttributeError:firstkey before?
>
> Thanks,
> Jenny


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"pygr-dev" group.
To post to this group, send email to pygr-dev@googlegroups.com
To unsubscribe from this group, send email to 
pygr-dev+unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/pygr-dev?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to