dbhash.md
1> **Источник:** https://python-all.ru/2.7/library/dbhash.html2>3> «Документация Python на русском» – неофициальный перевод официальной документации Python: версии от 2.6 до 3.16, полнотекстовый поиск, английский оригинал рядом с переводом. Эта Markdown-версия страницы предназначена для работы с LLM: вставьте её в ChatGPT, Claude или Cursor.45---67# 11.10. [`dbhash`](https://python-all.ru/2.7/library/dbhash.html#module-dbhash) – DBM-подобный интерфейс к библиотеке баз данных BSD89Устарело с версии 2.6: Модуль [`dbhash`](https://python-all.ru/2.7/library/dbhash.html#module-dbhash) удалён в Python 3.1011Модуль [`dbhash`](https://python-all.ru/2.7/library/dbhash.html#module-dbhash) предоставляет функцию для открытия баз данных с помощью библиотеки BSD `db`. Этот модуль повторяет интерфейс других модулей баз данных Python, которые обеспечивают доступ к базам данных в стиле 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).1213Этот модуль предоставляет исключение и функцию:1415#### `exception dbhash.error`1617Исключение, возникающее при ошибках базы данных, кроме [`KeyError`](https://python-all.ru/2.7/library/exceptions.html#exceptions.KeyError). Является синонимом `bsddb.error`.1819#### `dbhash.open(path[, flag[, mode]])`2021Открывает базу данных `db` и возвращает объект базы данных. Аргумент *path* – это имя файла базы данных.2223Аргумент *flag* может принимать следующие значения:2425| Значение | Значение |26| --- | --- |27| `'r'` | Открыть существующую базу данных только для чтения (по умолчанию) |28| `'w'` | Открыть существующую базу данных для чтения и записи |29| `'c'` | Открыть базу данных для чтения и записи, создав её, если она не существует |30| `'n'` | Всегда создавать новую пустую базу данных, открытую для чтения и записи |3132На платформах, где библиотека BSD `db` поддерживает блокировку, можно добавить `'l'`, чтобы указать, что блокировка должна использоваться.3334Необязательный параметр *mode* используется для указания битов разрешений Unix, которые должны быть установлены, если необходимо создать новую базу данных; это значение будет маскироваться текущим значением umask процесса.3536> **См. также**37>38> **Модуль [`anydbm`](https://python-all.ru/2.7/library/anydbm.html#module-anydbm)**39>40> Общий интерфейс для баз данных стиля `dbm`.41>42> **Модуль [`bsddb`](https://python-all.ru/2.7/library/bsddb.html#module-bsddb)**43>44> Низкоуровневый интерфейс к библиотеке BSD `db`.45>46> **Модуль [`whichdb`](https://python-all.ru/2.7/library/whichdb.html#module-whichdb)**47>48> Вспомогательный модуль для определения типа существующей базы данных.4950## 11.10.1. Объекты базы данных5152Объекты базы данных, возвращаемые [`open()`](https://python-all.ru/2.7/library/dbhash.html#dbhash.open), предоставляют общие для всех баз данных в стиле DBM и отображающих объектов методы. В дополнение к стандартным методам доступны следующие методы.5354#### `dbhash.first()`5556Можно перебрать все пары ключ/значение в базе данных с помощью этого метода и метода `next()`. Обход упорядочен по внутренним хеш-значениям базы данных, а не будет отсортирован по значениям ключей. Этот метод возвращает начальный ключ.5758#### `dbhash.last()`5960Возвращает последнюю пару ключ/значение при обходе базы данных. Это может быть использовано для начала обхода в обратном порядке; см. [`previous()`](https://python-all.ru/2.7/library/dbhash.html#dbhash.dbhash.previous).6162#### `dbhash.next()`6364Возвращает следующую пару ключ/значение при обходе базы данных. Следующий код выводит каждый ключ в базе данных `db`, без необходимости создавать в памяти список, содержащий их все:6566```python67print db.first()68for i in xrange(1, len(db)):69 print db.next()70```7172#### `dbhash.previous()`7374Возвращает предыдущую пару ключ/значение при прямом обходе базы данных. В сочетании с [`last()`](https://python-all.ru/2.7/library/dbhash.html#dbhash.dbhash.last) это может быть использовано для реализации обхода в обратном порядке.7576#### `dbhash.sync()`7778Этот метод принудительно записывает все незаписанные данные на диск.79