Документация Python неофициальный перевод

anydbm.md

96 строк · 6.9 КБ · обычная страница · сырой текст · скачать

1> **Источник:** https://python-all.ru/2.7/library/anydbm.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 11.6. [`anydbm`](https://python-all.ru/2.7/library/anydbm.html#module-anydbm) – универсальный доступ к базам данных DBM89> **Примечание**10>11> Модуль [`anydbm`](https://python-all.ru/2.7/library/anydbm.html#module-anydbm) был переименован в [`dbm`](https://python-all.ru/2.7/library/dbm.html#module-dbm) в Python 3. Инструмент [2to3](https://python-all.ru/2.7/glossary.html#term-2to3) автоматически адаптирует импорты при преобразовании исходных кодов в Python 3.1213[`anydbm`](https://python-all.ru/2.7/library/anydbm.html#module-anydbm) – универсальный интерфейс к разновидностям базы данных DBM: [`dbhash`](https://python-all.ru/2.7/library/dbhash.html#module-dbhash) (требуется [`bsddb`](https://python-all.ru/2.7/library/bsddb.html#module-bsddb)), [`gdbm`](https://python-all.ru/2.7/library/gdbm.html#module-gdbm) или [`dbm`](https://python-all.ru/2.7/library/dbm.html#module-dbm). Если ни один из этих модулей не установлен, используется медленная, но простая реализация в модуле [`dumbdbm`](https://python-all.ru/2.7/library/dumbdbm.html#module-dumbdbm).1415#### `anydbm.open(filename[, flag[, mode]])`1617Открывает файл базы данных *filename* и возвращает соответствующий объект.1819Если файл базы данных уже существует, модуль [`whichdb`](https://python-all.ru/2.7/library/whichdb.html#module-whichdb) используется для определения его типа и применяется соответствующий модуль; если файла нет, используется первый из перечисленных выше модулей, который может быть импортирован.2021Необязательный аргумент *flag* должен быть одним из следующих значений:2223| Значение | Значение |24| --- | --- |25| `'r'` | Открыть существующую базу данных только для чтения (по умолчанию) |26| `'w'` | Открыть существующую базу данных для чтения и записи |27| `'c'` | Открыть базу данных для чтения и записи, создав её, если она не существует |28| `'n'` | Всегда создавать новую пустую базу данных, открытую для чтения и записи |2930Если не указано, значение по умолчанию – `'r'`.3132Необязательный аргумент *mode* – это режим файла Unix, используемый только при создании базы данных. По умолчанию это восьмеричное `0666` (и будет изменено текущей umask).3334#### `exception anydbm.error`3536Кортеж, содержащий исключения, которые могут быть возбуждены каждым из поддерживаемых модулей, причём уникальное исключение с именем [`anydbm.error`](https://python-all.ru/2.7/library/anydbm.html#anydbm.error) является первым элементом – последнее используется, когда возбуждается [`anydbm.error`](https://python-all.ru/2.7/library/anydbm.html#anydbm.error).3738Объект, возвращаемый [`open()`](https://python-all.ru/2.7/library/anydbm.html#anydbm.open), поддерживает большую часть функциональности словарей; можно сохранять, извлекать и удалять ключи и соответствующие им значения, а также доступны методы `has_key()` и `keys()`. Ключи и значения всегда должны быть строками.3940Следующий пример записывает несколько имен хостов и соответствующий заголовок, а затем выводит содержимое базы данных:4142```python43import anydbm4445# Открыть базу данных, создав её при необходимости.46db = anydbm.open('cache', 'c')4748# Записать несколько значений.49db['www.python.org'] = 'Python Website'50db['www.cnn.com'] = 'Cable News Network'5152# Перебор содержимого.  Другие методы словаря53# такие как .keys(), .values() также работают.54for k, v in db.iteritems():55    print k, '\t', v5657# Сохранение нестрокового ключа или значения вызовет исключение (скорее всего,58# TypeError).59db['www.yahoo.com'] = 46061# Закрыть после завершения.62db.close()63```6465В дополнение к методам, похожим на словарные, объекты `anydbm` предоставляют следующий метод:6667#### `anydbm.close()`6869Закрыть базу данных `anydbm`.7071> **См. также**72>73> **Модуль [`dbhash`](https://python-all.ru/2.7/library/dbhash.html#module-dbhash)**74>75> Интерфейс базы данных `db` BSD.76>77> **Модуль [`dbm`](https://python-all.ru/2.7/library/dbm.html#module-dbm)**78>79> Стандартный интерфейс базы данных Unix.80>81> **Модуль [`dumbdbm`](https://python-all.ru/2.7/library/dumbdbm.html#module-dumbdbm)**82>83> Переносимая реализация интерфейса `dbm`.84>85> **Модуль [`gdbm`](https://python-all.ru/2.7/library/gdbm.html#module-gdbm)**86>87> Интерфейс базы данных GNU, основанный на интерфейсе `dbm`.88>89> **Модуль [`shelve`](https://python-all.ru/2.7/library/shelve.html#module-shelve)**90>91> Общая объектная персистентность, построенная на основе интерфейса Python `dbm`.92>93> **Модуль [`whichdb`](https://python-all.ru/2.7/library/whichdb.html#module-whichdb)**94>95> Вспомогательный модуль для определения типа существующей базы данных.96