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

11.11. bsddb – интерфейс к библиотеке Berkeley DBbsddb – Interface to Berkeley DB library

Устарело с версии 2.6: Модуль bsddb удалён в Python 3.

Модуль bsddb предоставляет интерфейс к библиотеке Berkeley DB. Пользователи могут создавать файлы библиотеки на основе хешей, B-деревьев или записей, используя соответствующий вызов open. Объекты bsddb в целом ведут себя как словари. Однако ключи и значения должны быть строками, поэтому для использования других объектов в качестве ключей или для хранения объектов других типов необходимо их каким-либо образом сериализовать, обычно с помощью marshal.dumps() или pickle.dumps().

Модуль bsddb требует версию библиотеки Berkeley DB с 4.0 по 4.7.

См. также

http://www.jcea.es/programacion/pybsddb.htm

Веб-сайт с документацией для интерфейса bsddb.db Python Berkeley DB, который в точности повторяет объектно-ориентированный интерфейс, предоставляемый в самом Berkeley DB 4.x.

http://www.oracle.com/database/berkeley-db/

Библиотека Berkeley DB.

Более современный интерфейс объектов DB, DBEnv и DBSequence доступен в модуле bsddb.db, который в точности соответствует C API Berkeley DB, описанному по указанным выше адресам. Дополнительные возможности, предоставляемые API bsddb.db, включают тонкую настройку, транзакции, журналирование и многопроцессный конкурентный доступ к базе данных.

Ниже приводится описание устаревшего интерфейса bsddb, совместимого со старым модулем Python bsddb. Начиная с Python 2.5 этот интерфейс должен быть безопасным для многопоточного доступа. API bsddb.db рекомендуется для пользователей, работающих с потоками, так как он обеспечивает лучший контроль.

Модуль bsddb определяет следующие функции, создающие объекты для доступа к соответствующему типу файла Berkeley DB. Первые два аргумента каждой функции одинаковы. Для удобства переносимости в большинстве случаев следует использовать только первые два аргумента.

bsddb.hashopen(filename[, flag[, mode[, pgsize[, ffactor[, nelem[, cachesize[, lorder[, hflags]]]]]]]])

Открыть файл в хеш-формате с именем filename. Файлы, которые не предназначены для сохранения на диске, можно создать, передав None в качестве filename. Необязательный параметр flag определяет режим открытия файла. Он может быть 'r' (только чтение), 'w' (чтение-запись), 'c' (чтение-запись – создать при необходимости; по умолчанию) или 'n' (чтение-запись – усечь до нулевой длины). Остальные аргументы используются редко и просто передаются low-level функции dbopen(). Обратитесь к документации Berkeley DB за разъяснением их использования и назначения.

bsddb.btopen(filename[, flag[, mode[, btflags[, cachesize[, maxkeypage[, minkeypage[, pgsize[, lorder]]]]]]]])

Открыть файл в формате B-дерева с именем filename. Файлы, которые не предназначены для сохранения на диске, можно создать, передав None в качестве filename. Необязательный параметр flag определяет режим открытия файла. Он может быть 'r' (только чтение), 'w' (чтение-запись), 'c' (чтение-запись – создать при необходимости; по умолчанию) или 'n' (чтение-запись – усечь до нулевой длины). Остальные аргументы используются редко и просто передаются low-level функции dbopen. Обратитесь к документации Berkeley DB за разъяснением их использования и назначения.

bsddb.rnopen(filename[, flag[, mode[, rnflags[, cachesize[, pgsize[, lorder[, rlen[, delim[, source[, pad]]]]]]]]]])

Открыть файл в формате записей DB с именем filename. Файлы, которые не предназначены для сохранения на диске, можно создать, передав None в качестве filename. Необязательный параметр flag определяет режим открытия файла. Он может быть 'r' (только чтение), 'w' (чтение-запись), 'c' (чтение-запись – создать при необходимости; по умолчанию) или 'n' (чтение-запись – усечь до нулевой длины). Остальные аргументы используются редко и просто передаются low-level функции dbopen. Обратитесь к документации Berkeley DB за разъяснением их использования и назначения.

Примечание

Начиная с версии 2.3 в некоторых Unix-версиях Python может присутствовать модуль bsddb185. Он присутствует только для обеспечения обратной совместимости с системами, поставляемыми со старой библиотекой базы данных Berkeley DB 1.85. Модуль bsddb185 никогда не следует использовать напрямую в новом коде. Этот модуль удалён в Python 3. Если вы обнаружите, что он всё ещё нужен, ищите его в PyPI.

См. также

Модуль dbhash

Интерфейс в стиле DBM к bsddb

11.11.1. Объекты Hash, BTree и RecordHash, BTree and Record Objects

После создания экземпляра объекты hash, btree и record поддерживают те же методы, что и словари. Кроме того, они поддерживают методы, перечисленные ниже.

Изменено в версии 2.3.1: Добавлены методы словаря.

bsddbobject.close()

Закрывает базовый файл. Объект больше не может быть доступен. Поскольку для этих объектов не существует метода open open(), чтобы снова открыть файл, необходимо вызвать новую функцию open модуля bsddb.

bsddbobject.keys()

Возвращает список ключей, содержащихся в файле DB. Порядок списка не определён и на него не следует полагаться. В частности, порядок возвращаемого списка различается для разных форматов файлов.

bsddbobject.has_key(key)

Возвращает 1, если файл DB содержит аргумент в качестве ключа.

bsddbobject.set_location(key)

Устанавливает курсор на элемент, указанный key, и возвращает кортеж, содержащий ключ и его значение. Для баз данных на основе бинарных деревьев (открытых с помощью btopen()), если key фактически не существует в базе данных, курсор будет указывать на следующий элемент в отсортированном порядке и вернёт этот ключ и значение. Для других баз данных будет вызвано KeyError, если key не будет найден в базе данных.

bsddbobject.first()

Устанавливает курсор на первый элемент в файле DB и возвращает его. Порядок ключей в файле не определён, за исключением баз данных B-Tree. Этот метод вызывает bsddb.error, если база данных пуста.

bsddbobject.next()

Устанавливает курсор на следующий элемент в файле DB и возвращает его. Порядок ключей в файле не определён, за исключением баз данных B-Tree.

bsddbobject.previous()

Устанавливает курсор на предыдущий элемент в файле DB и возвращает его. Порядок ключей в файле не определён, за исключением баз данных B-Tree. Это не поддерживается для хеш-таблиц (открытых с помощью hashopen()).

bsddbobject.last()

Устанавливает курсор на последний элемент в файле DB и возвращает его. Порядок ключей в файле не определён. Это не поддерживается для хеш-таблиц (открытых с помощью hashopen()). Этот метод вызывает bsddb.error, если база данных пуста.

bsddbobject.sync()

Синхронизирует базу данных на диске.

Пример:

>>> import bsddb
>>> db = bsddb.btopen('spam.db', 'c')
>>> for i in range(10): db['%d'%i] = '%d'% (i*i)
...
>>> db['3']
'9'
>>> db.keys()
['0', '1', '2', '3', '4', '5', '6', '7', '8', '9']
>>> db.first()
('0', '0')
>>> db.next()
('1', '1')
>>> db.last()
('9', '81')
>>> db.set_location('2')
('2', '4')
>>> db.previous()
('1', '1')
>>> for k, v in db.iteritems():
...     print k, v
0 0
1 1
2 4
3 9
4 16
5 25
6 36
7 49
8 64
9 81
>>> '8' in db
True
>>> db.sync()
0