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

anydbm.md

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

1> **Источник:** https://python-all.ru/2.6/library/anydbm.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 11.6. `anydbm` – Generic access to DBM-style databases89> **Примечание**10>11> Модуль `anydbm` был переименован в [`dbm`](https://python-all.ru/2.6/library/dbm.html#module-dbm) в Python 3.0. Инструмент [*2to3*](https://python-all.ru/2.6/glossary.html#term-to3) автоматически адаптирует импорты при преобразовании исходного кода к версии 3.0.1213`anydbm` – это универсальный интерфейс к разновидностям базы данных DBM – [`dbhash`](https://python-all.ru/2.6/library/dbhash.html#module-dbhash) (требует [`bsddb`](https://python-all.ru/2.6/library/bsddb.html#module-bsddb)), [`gdbm`](https://python-all.ru/2.6/library/gdbm.html#module-gdbm) или [`dbm`](https://python-all.ru/2.6/library/dbm.html#module-dbm). Если ни один из этих модулей не установлен, будет использоваться медленная, но простая реализация из модуля [`dumbdbm`](https://python-all.ru/2.6/library/dumbdbm.html#module-dumbdbm).1415#### `anydbm.open(filename[, flag[, mode]])`1617Открывает файл базы данных *filename* и возвращает соответствующий объект.1819Если файл базы данных уже существует, модуль [`whichdb`](https://python-all.ru/2.6/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Кортеж, содержащий исключения, которые могут быть вызваны каждым из поддерживаемых модулей, с уникальным исключением, также названным3738[`anydbm.error`](https://python-all.ru/2.6/library/anydbm.html#anydbm.error)3940в качестве первого элемента – последнее используется, когда возникает4142[`anydbm.error`](https://python-all.ru/2.6/library/anydbm.html#anydbm.error)4344.4546Объект, возвращаемый функцией [`open()`](https://python-all.ru/2.6/library/anydbm.html#anydbm.open), поддерживает большинство тех же возможностей, что и словари; можно сохранять, извлекать и удалять ключи и соответствующие им значения, а также доступны методы `has_key()` и `keys()`. Ключи и значения всегда должны быть строками.4748Следующий пример записывает несколько имен хостов и соответствующий заголовок, а затем выводит содержимое базы данных:4950```python51import anydbm5253# Открыть базу данных, создав её при необходимости.54db = anydbm.open('cache', 'c')5556# Записать несколько значений.57db['www.python.org'] = 'Python Website'58db['www.cnn.com'] = 'Cable News Network'5960# Перебор содержимого.  Другие методы словаря61# такие как .keys(), .values() также работают.62for k, v in db.iteritems():63    print k, '\t', v6465# Сохранение нестрокового ключа или значения вызовет исключение (скорее всего,66# TypeError).67db['www.yahoo.com'] = 46869# Закрыть после завершения.70db.close()71```7273> **См. также**74>75> **Модуль [`dbhash`](https://python-all.ru/2.6/library/dbhash.html#module-dbhash)**76>77> Интерфейс к базе данных BSD78>79> `db`80>81> .82>83> **Модуль [`dbm`](https://python-all.ru/2.6/library/dbm.html#module-dbm)**84>85> Стандартный интерфейс базы данных Unix.86>87> **Модуль [`dumbdbm`](https://python-all.ru/2.6/library/dumbdbm.html#module-dumbdbm)**88>89> Переносимая реализация интерфейса90>91> `dbm`92>93> .94>95> **Модуль [`gdbm`](https://python-all.ru/2.6/library/gdbm.html#module-gdbm)**96>97> Интерфейс к базе данных GNU, основанный на интерфейсе98>99> `dbm`100>101> .102>103> **Модуль [`shelve`](https://python-all.ru/2.6/library/shelve.html#module-shelve)**104>105> Универсальное сохранение объектов (persistence) на основе интерфейса Python106>107> `dbm`108>109> .110>111> **Модуль [`whichdb`](https://python-all.ru/2.6/library/whichdb.html#module-whichdb)**112>113> Вспомогательный модуль для определения типа существующей базы данных.114