Ошибка при поиске данных, мне нужны некоторые указатели

У меня есть файл DBM, который приводит к ошибке, когда я пытаюсь получить доступ к значению напрямую:

>>> import dbm
>>> db = dbm.open('scrapers','c')
>>> key1 = db.keys()[0]
>>> db[key1]
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
dbm.error
>>> db.get(key1)
'(dp1\nS\'username\'\np2\nNsS\'password\'...etc...

Это происходит только с этим файлом, он содержит маринованные классы скребков для различных веб-сайтов.

Я не могу предоставить фактические данные БД, потому что они содержат данные для входа. Мой вопрос: каковы возможные объяснения этой проблемы? Где я должен начать искать, чтобы отладить это?

Если вам нужна какая-либо другая информация (кроме самих данных), пожалуйста, дайте мне знать.

1 ответ

Решение

Оказывается, в dbm есть подробности, которые не описаны в документации по python dbm:

The sum of the sizes of a key/content pair must not exceed the internal block size (normally between 512 and 4096 bytes).

я использую gdbm сейчас, и это работает просто отлично.

Другие вопросы по тегам