Который Python API должен использоваться с монго DB и Django

Я шел назад и вперед по который Python API для использования при взаимодействии с монго. Я сделал быстрый обзор среды и идентифицировал трех ведущих кандидатов.

Если бы Вы разрабатывали новый довольно-тяжелый веб-сайт с помощью django платформы, что API Вы выбрали бы и почему?

MongoEngine похож на него, был создан конкретно с Django в памяти. PyMongo, кажется, тонкая обертка вокруг монго. Это имеет много силы, хотя теряет много абстракций, полученных посредством использования django как платформа. Ming представляет интересный компромисс между PyMongo и MongoEngine, хотя у меня не было возможности взять его для тест-драйва.

47
задан Thomas 29 April 2010 в 21:18
поделиться

4 ответа

Как говорит Майк, вы не можете избежать PyMongo - все остальные интерфейсы строятся на нем. Эти другие интерфейсы, вероятно, не нужны. ORM, подобные тем, которые используются в Django, полезны при работе с SQL, поскольку они снижают сложность создания SQL-запросов и схем и синтаксического анализа наборов результатов в объекты.

PyMongo, однако, это уже покрыло - запросы проходят через удобный и простой API, а результаты, поступающие из MongoDB, уже являются объектами (ну, dicts в Python - такая же разница) по определению. Если вы чувствуете, что вам действительно нужно украсить свои документы Mongo объектами Python, легко добавить манипулятор SON в PyMongo. Хорошая вещь в этом подходе заключается в том, что вы можете писать код непосредственно на PyMongo, а позже добавлять дополнительные функции без необходимости вставлять новый API между вашим кодом и PyMongo.

Что осталось? Создание и миграция схемы в некоторой степени полезны, но почти так же просто выполняются по отдельности - есть вероятность, что если вы планируете использовать MongoDB, вы все равно захотите вырваться из традиционной модели в стиле SQL. Кроме того, если бы существовала полностью совместимая с Django ORM MongoDB, вы могли бы извлечь из этого выгоду.Что-нибудь меньшее, и вы, вероятно, будете создавать работу для себя.

Вы не пожалеете об использовании PyMongo напрямую.

Последний вариант, на который стоит обратить внимание, если вас интересует максимальная эффективность, - это асинхронная версия PyMongo, здесь: http://github.com/fiorix/mongo-async-python-driver

56
ответ дан 26 November 2019 в 19:43
поделиться

Я работал с Монгокитом . Пока нравится.

Вот сообщение в блоге , на которое я ссылался при интеграции с Django

11
ответ дан 26 November 2019 в 19:43
поделиться

И MongoEngine, и Ming зависят от PyMongo - они просто привносят в него некоторую приятную функциональность. Я бы рекомендовал хотя бы начать с PyMongo напрямую -Таким образом, если вы решите использовать один из других инструментов и столкнетесь с проблемами, будет легко понять, что происходит «под капотом». Тем не менее, я очень предвзят ;).

6
ответ дан 26 November 2019 в 19:43
поделиться

Вы можете попробовать django-mongodb-engine. Это бэкэнд для Django-nonrel, поэтому вы можете продолжать использовать модели Django и ORM. Однако это еще не так полно, как другие API: http://www.allbuttonspressed.com/blog/django/2010/05/MongoDB-backend-for-Django-nonrel-released

5
ответ дан 26 November 2019 в 19:43
поделиться
Другие вопросы по тегам:

Похожие вопросы: