[Python-ideas] shelve and sqlite

Yuval Greenfield ubershmekel at gmail.com
Fri Aug 5 23:48:15 CEST 2011


Actually I was originally thinking of just directly interacting with sqlite3
in shelve.py but if you think this is the better approach (it does make
sense to just use the dbm api), I'm willing to try and write up the patch.

Some more shelve stack traces follow:


Traceback (most recent call last):
  File "import_chess.py", line 282, in <module>
    get_all_players()
  File "import_chess.py", line 182, in get_all_players
    get_player_tourneys(first, last)
  File "import_chess.py", line 172, in get_player_tourneys
    get_tournament(tournament_id)
  File "import_chess.py", line 139, in get_tournament
    tournament_table = get_tournament_by_type(tournament_id, 3)
  File "import_chess.py", line 90, in get_tournament_by_type
    tournament_html = get(url).decode('iso-8859-1')
  File
"c:\python27\lib\site-packages\filecache-0.67-py2.7.egg\filecache\__init_
_.py", line 82, in function_with_cache
    rv = function.__db[key]
  File "c:\python27\lib\shelve.py", line 122, in __getitem__
    value = Unpickler(f).load()
cPickle.UnpicklingError: invalid load key, 'x'.

Traceback (most recent call last):
  File "import_chess.py", line 286, in <module>
    get_all_players()
  File "import_chess.py", line 186, in get_all_players
    get_player_tourneys(first, last)
  File "import_chess.py", line 174, in get_player_tourneys
    get_tournament(tournament_id)
  File "import_chess.py", line 137, in get_tournament
    tournament_table = get_tournament_by_type(tournament_id, 2)
  File "import_chess.py", line 90, in get_tournament_by_type
    tournament_html = get(url).decode('iso-8859-1')
  File
"c:\python27\lib\site-packages\filecache-0.67-py2.7.egg\filecache\__init_
_.py", line 91, in function_with_cache
    function.__db[key] = __retval(_time.time(), _pickle.dumps(retval))
  File "c:\python27\lib\shelve.py", line 133, in __setitem__
    self.dict[key] = f.getvalue()
  File "c:\python27\lib\bsddb\__init__.py", line 279, in __setitem__
    _DeadlockWrap(wrapF)  # self.db[key] = value
  File "c:\python27\lib\bsddb\dbutils.py", line 68, in DeadlockWrap
    return function(*_args, **_kwargs)
  File "c:\python27\lib\bsddb\__init__.py", line 278, in wrapF
    self.db[key] = value
bsddb.db.DBRunRecoveryError: (-30974, 'DB_RUNRECOVERY: Fatal error, run
database
 recovery -- PANIC: Invalid argument')

--Yuval
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/python-ideas/attachments/20110806/8a64b215/attachment.html>


More information about the Python-ideas mailing list