Ошибка при поиске данных, мне нужны некоторые указатели
У меня есть файл 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
сейчас, и это работает просто отлично.