11.6. anydbm – универсальный доступ к базам данных DBM¶anydbm – Generic access to DBM-style databases
Примечание
Модуль anydbm был переименован в dbm в Python 3.
Инструмент 2to3 автоматически адаптирует импорты при преобразовании исходных кодов в Python 3.
anydbm – универсальный интерфейс к разновидностям базы данных DBM:
dbhash (требуется bsddb), gdbm или dbm. Если ни один из этих модулей не установлен, используется медленная, но простая реализация в модуле
dumbdbm.
-
anydbm.open(filename[, flag[, mode]])¶ Открывает файл базы данных filename и возвращает соответствующий объект.
Если файл базы данных уже существует, модуль
whichdbиспользуется для определения его типа и применяется соответствующий модуль; если файла нет, используется первый из перечисленных выше модулей, который может быть импортирован.Необязательный аргумент flag должен быть одним из следующих значений:
Значение
Значение
'r'Открыть существующую базу данных только для чтения (по умолчанию)
'w'Открыть существующую базу данных для чтения и записи
'c'Открыть базу данных для чтения и записи, создав её, если она не существует
'n'Всегда создавать новую пустую базу данных, открытую для чтения и записи
Если не указано, значение по умолчанию –
'r'.Необязательный аргумент mode – это режим файла Unix, используемый только при создании базы данных. По умолчанию это восьмеричное
0666(и будет изменено текущей umask).
-
exception
anydbm.error¶ Кортеж, содержащий исключения, которые могут быть возбуждены каждым из поддерживаемых модулей, причём уникальное исключение с именем
anydbm.errorявляется первым элементом – последнее используется, когда возбуждаетсяanydbm.error.
Объект, возвращаемый open(), поддерживает большую часть функциональности словарей; можно сохранять, извлекать и удалять ключи и соответствующие им значения, а также доступны методы has_key() и keys(). Ключи
и значения всегда должны быть строками.
Следующий пример записывает несколько имен хостов и соответствующий заголовок, а затем выводит содержимое базы данных:
import anydbm
# Открыть базу данных, создав её при необходимости.
db = anydbm.open('cache', 'c')
# Записать несколько значений.
db['www.python.org'] = 'Python Website'
db['www.cnn.com'] = 'Cable News Network'
# Перебор содержимого. Другие методы словаря
# такие как .keys(), .values() также работают.
for k, v in db.iteritems():
print k, '\t', v
# Сохранение нестрокового ключа или значения вызовет исключение (скорее всего,
# TypeError).
db['www.yahoo.com'] = 4
# Закрыть после завершения.
db.close()
В дополнение к методам, похожим на словарные, объекты anydbm предоставляют следующий метод:
-
anydbm.close()¶ Закрыть базу данных
anydbm.
См. также
- Модуль
dbhash Интерфейс базы данных
dbBSD.- Модуль
dbm Стандартный интерфейс базы данных Unix.
- Модуль
dumbdbm Переносимая реализация интерфейса
dbm.- Модуль
gdbm Интерфейс базы данных GNU, основанный на интерфейсе
dbm.- Модуль
shelve Общая объектная персистентность, построенная на основе интерфейса Python
dbm.- Модуль
whichdb Вспомогательный модуль для определения типа существующей базы данных.