МонгоДБ + Джанго
Привет, кто может подсказать по Монго+Джанго?
Есть существующая МонгоДБ, которую нужно подключить к Джанго проекту. Каждый документ таблицы содержит 23 поля, некоторые просто string, но также есть array и object. Есть поля с глубокой вложенностью, например array -> object -> тут несколько string и опять array > string. Вложенные объекты не имеют айди.
Нашел библиотеку Djongo для работы с MongoDB в Джанго. Есть еще MongoEngine, но особо разницы не вижу, они все нужны для эмуляции работы ORM с NoSQL.
Теперь мне нужно описать модель в Джанго. Админ. команда django inspectdb не работает. Пытался описать вручную, но затык как раз на вложенных объектах. Как правильно это делать? Создавать отдельные абстрактные модели и делать что-то вроде relations в основной модели? Или вообще не описывать модели и работать с NoSQL языком?
Кто сталкивался?
8 коментарів
Додати коментар Підписатись на коментаріВідписатись від коментарівВ Джанго 3.1 обещают улучшить поддержку остальных бд (помимо пострегсс)
Якщо треба звичайне REST API то простіше вибрати мову програмування на якій є готові і якісні бібліотеки для MongoDB, Node.js або Golang
І просте API з пагінацією та мінімальною фільтрацією яке віддає дані з MongoDB на Golang можна написати за день, з агрегаціями трохи довше
Я сталкивался когда писал драйвер PEP-249 для etcd. КМК, в случае с MongoDB оно того не стоит. Во-первых, Mongo не поддерживает то, что поддерживает реляционная база данных и, соответственно, то что ожидает от базы Django. Во-вторых, постоянно будут вылезать проблемы связанные с пунктом один (миграции, foreign keys, indexes).
Сложно представить хорошую причину почему надо пойти на это — может расскажете зачем?
да я сам склоняюсь к такому мнению, как-минимум потому, что связка mongo-django выглядит сырой, библиотек мало и работают коряво, уже с третьей вылазят косяки. Просто заказчик дал базу с данными, которую надо подключить. Он со своей стороны парсит туда данные, а мне нужно рест-апи сделать.
что-то одно в этой паре надо поменять. Или базу на что-то PEP-249 совместимое, или Django на flask.
ок, а если на flask поменять, там напрямую с Nosql делать запросы?
да, я себе так это представляю. хотя сам flask я видел только на уровне документации, так что могу ошибаться.
ну если не смогу толково модели описать, скорее всего так и сделаю. Спасибо за совет