使用Django查询Neo4j数据库

时间:2017-09-29 14:10:44

标签: python django neo4j

我道歉,因为Django的思维方式对我来说仍然很陌生。我试图生成一个非常简单的页面,只是列出了使用Neo4j和Django(1.9.7)的简单密码查询的所有结果,我使用Python Neo4j驱动程序从Django访问数据库。然而,我陷入困境并且已经达到了我只是盲目地尝试的程度,因此我想要一些关于我想要实现的基础知识的指示/建议。

models.py

from django.views.generic.listimport ListView
from neo4j.v1 import GraphDatabase, basic_auth
from django.db import models

# Connect to DB
driver=GraphDatabase.driver("foo1",auth=basic_auth("foo2","foo3"))
session=driver.session()

class Stuff(models.Model):
  query = "MATCH (t:Time) return t"
  results=session.run(query)
  # Sanity check -> This just shows that the database and query both work
  for foo in results:
    print foo
    break
  def __str__(self):
    return results

views.py

from django.views.generic.list import ListView
from .models import Stuff

# I assume that I should be using a ListView here (as I was trying to get a queryset or similar from my models).
class IndexView(ListView):
  template_name = 'index.html'

  def get_queryset(self):
    fooList = []
    for record in Stuff.objects.get():
      fooList.append(record)
    return fooList

index.html(未经过测试,因为我还未设法将此设为“显示”)

{% block body %}

{% if fooList %}
  <h1>Woot!</h1>
{% endif %}

{% endblock %}

以上这些内容显然不起作用并抱怨Stuff没有任何objects,但我完全迷失了如何继续(因为我无法找到任何好的示例/文档在Django中使用这个驱动程序。)

2 个答案:

答案 0 :(得分:1)

neo4j python驱动程序中的session对象的

Documentation运行方法状态

run(statement, parameters=None, **kwparameters)

它返回StatementResult对象,如文档here

因此,根据文档,没有objects属性,因此.objects.get()方法不存在。

example中显示了在返回的StatementResult中执行访问记录的正确方法,如下所示:

for record in result:
      print("%s %s" % (record["title"], record["name"]))

所以在你的情况下你可能想要这样做:

for record in Stuff:
  fooList.append(record)

答案 1 :(得分:0)

您可以编写一个平面REsTFul API与前端进行通信,可以在React Angular2中编写以转储和显示您的数据。首先,你可以使用DRF(Django rest Framework),然后一切都会发生在你的views.py和serializers.py以及models.py中。为什么要避免使用Django模板,查询加载可能会影响您的应用程序顺利运行。