Какую клиентскую библиотеку Python я должен использовать для CouchdB?

Я начинаю экспериментировать с CouchDB, потому что он выглядит как идеальное решение для определенных проблем, которые у нас есть. Учитывая, что вся работа будет работать над совершенно новым проектом без каких-либо наследственных зависимостей, какую клиентскую библиотеку вы бы предложили использовать и почему?

Это было бы проще, если бы было какое-то совпадение с используемыми ОС. FreeBSD имеет py-simplecouchdb уже доступный в коллекции портов, но на этом веб-сайте проекта библиотеки используется CouchDBKit. Ни у кого из них нет Ubuntu, который поставляется только с CouchDB. Поскольку эти две ОС не имеют общих библиотек, я, вероятно, буду устанавливать что-то из источника (и, надеюсь, отправляет пакеты пользователям Ubuntu и FreeBSD, если у меня есть время).

Для желающих я хотел бы использовать CouchDB как удобное промежуточное место хранения данных, передаваемых между различными службами, - подумайте о системе сообщений, но с меньшей формальностью. Например, у нас есть демоны, которые скачивают и анализируют веб-страницы, а затем отправляют интересные бит другим демонам для дальнейшей обработки. Многие из этих объектов не определены до времени выполнения ( "здесь некоторый HTML, плюс набор метаданных и некоторые действия для запуска на нем" ). Вместо того, чтобы сериализовать его на специальный протокол локальной сети или использовать его в PostgreSQL, я бы скорее использовал что-то, предназначенное для этой цели. В настоящее время мы используем

Ответы

Ответ 1

Я использую couchdb-python с довольно большим успехом, и насколько я знаю, ребята из desktopcouch используют его в ubuntu. Предварительные требования очень просты, и у вас не должно быть проблем:

  • httplib2
  • simplejson или cjson
  • Python
  • CouchDB 0.9.x(ранее или более поздние версии вряд ли будут работать, поскольку интерфейс все еще меняется)

Для меня некоторые из преимуществ:

  • Интерфейс Pythonic. Вы можете работать с базой данных, как если бы это был dict.
  • Интерфейс для проектной документации.
  • сервер просмотра CouchDB, который позволяет записывать функции просмотра в Python

Он также предоставляет несколько инструментов командной строки:

  • couchdb-dump: записывает моментальный снимок базы данных CouchDB
  • couchdb-load: считывает MIME файл с несколькими файлами, сгенерированный с помощью couchdb-dump, и загружает все документы, вложения и проектные документы в базу данных CouchDB.
  • couchdb-replicate: может использоваться как уведомление об обновлении script для запуска репликации между базами данных при изменении данных.

Ответ 2

Если вы все еще рассматриваете CouchDB, я рекомендую Couchdbkit (http://www.couchdbkit.org). Это достаточно просто, чтобы быстро повесить и отлично работает на моей машине, работающей с Karmic Koala. До этого я пробовал couchdb-python, но некоторые ошибки (возможно, сглаженные к настоящему времени) с httplib давали мне некоторые ошибки (дубликаты документов..etc), но Couchdbkit меня подбросил и пошел без каких-либо проблем.

Ответ 3

spycouch

Простой API Python для CouchDB

Библиотека Python для управления CouchDB.

По сравнению с обычными доступными библиотеками в Интернете работает с последней версией CouchDB - 1.2.1

Функции

Создайте новую базу данных на сервере

Удаление базы данных с сервера

Список баз данных на сервере

Информация о базе данных

Сжатие базы данных

Создать вид карты

Вид карты

Листинг документов в DB

Получить документ из базы данных

Сохранить документ в DB

Удалить документ из базы данных

Редактирование документа

spycouch on → https://github.com/cernyjan/repository

Ответ 4

Учитывая задачу, которую вы пытаетесь решить (распределенная обработка задач), вы должны использовать один из многих инструментов, предназначенных для передачи сообщений, а не для использования базы данных. См. Например этот вопрос SO для запуска нескольких задач на многих машинах.

Если вам действительно нужна простая система передачи сообщений, я рекомендую вам сфокусироваться на MorbidQ. По мере того как вы становитесь более серьезными, используйте RabbitMQ или ActiveMQ. Таким образом, вы уменьшаете задержку в своей системе и избегаете того, чтобы многие клиенты опросили базу данных (и, таким образом, забили этот компьютер).

Я обнаружил, что избегать баз данных - это хорошая идея (Это мой блог) - и у меня есть сквозная система живых данных, работающая с использованием MorbidQ здесь

Ответ 5

Я написал клиентскую библиотеку couchdb, построенную на python-запросах (которая находится в большинстве дистрибутивов). Мы используем эту библиотеку в производстве.

https://github.com/adamlofts/couchdb-requests

Надежный интерфейс CouchDB Python с использованием запросов python.

Цель:

  • Только один способ сделать что-то
  • Быстрый и стабильный (пул соединений)
  • Явный лучше, чем неявный. Размер буфера, размер пула подключений.
  • Укажите параметры запроса, нет ** параметров в функциях запроса

Ответ 6

После прокрутки документов многих библиотек python couchdb мой выбор переместился в pycouchdb.

Все, что мне нужно было знать, было очень быстро понять из документа: https://py-couchdb.readthedocs.org/en/latest/ и работает как шарм.

Кроме того, он хорошо работает с Python 3.