Какую клиентскую библиотеку 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.