Какой API Python следует использовать с Mongo DB и Django - программирование
Подтвердить что ты не робот

Какой API Python следует использовать с Mongo DB и Django

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

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

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

4b9b3361

Ответ 1

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

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

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

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

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

Ответ 3

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

Ответ 5

Я только что нашел "micromongo":

http://packages.python.org/micromongo/

Похоже, он добавляет достаточно полезного материала поверх пимонго, не мешая ему.

Ответ 6

Взгляните на djongo. Он работает, переведя SQL-запросы в запросы mongodb.

Вам не нужен django-nonrel для запуска.

Все встроенные модули Django contrib (например, admin, user, session) работают без каких-либо изменений.

MongoEngine требует переписывать модули Contrib и последний раз, когда я проверил, собственный модуль администрирования не работал на MongoEngine.

Существующие модели работают без перевода ORM.