Модели Neo4j и django

#python #django #nosql #neo4j

#python #django #nosql #neo4j

Вопрос:

Итак, я изучаю интеграцию Django и Neo4j, но там не так много об этом… Что я хочу знать, так это есть ли у меня модель, подобная приведенной здесь: Если я хочу добавить новое свойство к модели, это было бы так же просто, как выполнить:

 node.setProperty( "newProperty", "something" );
  

??

Более того, все запросы в django будут работать? Как выполняется обход?

Я был бы признателен за любой ответ: D

Спасибо.

Ответ №1:

Мы работаем над обновлением интеграции Neo4j / Django для работы с neo4j-rest-client — плоды нашего труда на GitHub, с некоторыми краткими комментариями в моем блоге.

У нашей интеграции есть некоторые плюсы и минусы. Наиболее очевидное влияние оказывает использование нами REST-клиента — вы получаете возможность использовать удаленную базу данных, при этом теряя совсем немного в производительности. OTOH, интеграция работает вместе с реляционной базой данных, поэтому вы все еще можете использовать django.contrib, который основан на оригинальном ORM, и он довольно хорошо обрабатывает индексацию и наборы запросов.

Чтобы сделать то, что вы хотите выше, используя neo4django, вам просто нужно получить узел на основе neo4j-rest-client из экземпляра модели и использовать его.

 model_instance.node['newProperty'] = 'something'
  

Мы все еще работаем над тем, чтобы сделать интеграцию более динамичной, поддерживая обходы / etc Pythonic способом и (что на данный момент наиболее важно) улучшая производительность. Если вам интересно, я был бы рад обратной связи.

Ответ №2:

Вы видели пост в блоге Тобиаса об интеграции Django? Сейчас это немного устарело, но все еще актуально. Кроме того, вы также можете ознакомиться с примерами.

Комментарии:

1. Да, я видел это, но, как вы сказали, это довольно старое, поэтому я не был уверен, изменилось ли что-нибудь или обновлено. Я проверю примеры, да …

2. Но я все еще не понимаю, могу ли я добавить новое свойство или нет.. Было бы это так же просто, как отредактировать мой models.py ?

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

4. Прежде всего, я думал об этом именно так, но я предполагаю, что, если я хочу продолжать использовать Django, это способ добавить новую «информацию» к сущностям. Что ж .. Не вижу большого преимущества в использовании Neo4j с django, поскольку сущности привязываются к «типам» моделей, а обход не кажется таким хорошо реализованным. Не рассказываю о трудностях, с которыми это работает.. Я ошибаюсь?

5. Вы правы — Django ORM предназначен для создания схем, поэтому использование ORM в стиле Django для Neo4j приводит к наложению неестественных ограничений (таких как ввод текста и схемы) на базу данных. Вы всегда можете просто использовать Django с новым neo4j.py или neo4j-rest-client и полностью отказаться от ORM. Если это не помогает вам в вашем домене, зачем его использовать? Тем не менее, смотрите мой ответ ниже.