Модуль Python DBM для Windows? - PullRequest
       5

Модуль Python DBM для Windows?

2 голосов
/ 04 августа 2010

Я хотел бы использовать модуль dbm на моей машине с Windows, но в настоящее время он поддерживается только в Unix.http://docs.python.org/library/dbm.html

Кто-нибудь знает подобный модуль с похожим синтаксисом или обходной путь для получения функционала dmb в Windows?Возможность доступа к базе данных, записанной на жесткий диск, очень похожа на то, как я пишу код для доступа к словарю, было бы здорово.Спасибо за вашу помощь!

Ответы [ 4 ]

3 голосов
/ 04 августа 2010

На самом деле, после еще большего поиска, я нашел это:

http://docs.python.org/library/anydbm.html#module-anydbm

Я пробовал это на Windows, и, кажется, работает нормально =)

2 голосов
/ 15 марта 2012

На основании следующего теста в системе Windows 7 с использованием Python 2.7.2 выясняется, что dbhash поддерживается в установках Windows.

import os

import anydbm

import whichdb

file = os.curdir + '/testdbm'   # define a test file name in the current directory

d = anydbm.open(file, 'c')      # create a new database using the test file name

db_type = whichdb.whichdb(file) # get the dbm database type

print(db_type)                  # display the result

'dbhash'
1 голос
/ 15 июля 2017

Если бы Python 3 был актуален, я бы выбрал внешнее решение для kv, так как dumbdbm не радует.

Некоторые чистые опции Python:

  • semidbm - более быстрая альтернатива dumbdbm, только для стандартной библиотеки Python, pip и go.Тот, который я бы выбрал, если хочу обеспечить мобильность и доступность для пользователей.

  • PickleDB - использует json для сериализации данных.Только для стандартной библиотеки, я не тестировал ее, но подозреваю, что она медленнее, чем полубаза из-за издержек сериализации.

  • Petite DB - Мой собственный простой обходной путь с использованием zip-файла Pythonмодуль.Базовое тестирование в книгах, но оно не готово к работе.

Есть также оболочки Python для LMDB , UnQLite и SQLite4 LSM, все из которых поддерживают Windows, хотя привязки SQLite4 не тестировались.

Последние два принадлежат Чарльзу Лайферу, который хорошо разбирается в kv магазинах и заядлым разработчиком Python (см. Peewee ).

AsЧто касается LMDB, я пробовал это некоторое время.Претензий нет, но он использует транзакционную модель, в которой вы не можете использовать его в стиле словаря, как и в других dbm, если вы не создаете подкласс / составляете / отправляете запрос на извлечение и т. Д. Кроме того, он явно не использует сжатие (см. также ), что меня интересовало.

Так что LMDB просто не вполне соответствовал моим конкретным потребностям.Кажется, что он обладает высокой способностью, привязки работали нормально, и их установка не вызывала затруднений (pip работал для меня, не нужно было устанавливать LMDB отдельно или создавать какие-либо неудобства на этот счет).

0 голосов
/ 02 августа 2011

Я думаю, что anydbm в Windows будет загружать только dumbdbm, поскольку все остальные модули работают только в Unix. Согласно документации Python ...

"Модуль dumbdbm предназначен в качестве крайней меры для модуль anydbm, когда более надежный модуль недоступен. Тупица модуль не написан для скорости и не так интенсивно используется, как другие модули базы данных. "

...