首页 > 编程问答 >如何使用 Django 在 neo4j 中创建节点

如何使用 Django 在 neo4j 中创建节点

时间:2024-07-25 08:31:49浏览次数:17  
标签:python django neo4j

我正在开发一个网络应用程序。对于后端,我选择了 Django,作为数据库,我想使用图形数据库,所以我选择了 neo4j。

有一个 Python 库 neomodel 用于使用 neo4j 和一个特定的库 django_neomodel 要合并|| |使用 Django。 neomodel 我可以使用 Django 和 neo4j 从数据库中的节点检索数据,但是,我无法让它

创建 数据库中的节点。 这里是一部分我的

文件: settings.py 这里

INSTALLED_APPS = [
    ...
    'django_neomodel',
    'neomodel',
    'corsheaders',
    'rest_framework',
    'rest_framework.authtoken',
    'rest_framework_simplejwt',
    'create',
]

REST_FRAMEWORK = {
    'DEFAULT_AUTHENTICATION_CLASSES': [
        'rest_framework_simplejwt.authentication.JWTAuthentication',
        'rest_framework.authentication.TokenAuthentication',
    ],
}

NEOMODEL_NEO4J_BOLT_URL = 'bolt://neo4j:password@localhost:7687'

来自 views.py 这里 create

class RegisterView(View):
    """
    This view handles POST requests to create a new user in the database.
    """
    
    def post(self, request):
        new_node = myNode(
            XXX=request.POST['XXX'],
            YYY=request.POST['YYY'],
            ZZZ=request.POST['ZZZ']
        )
        new_node.save()

类: myNode 我得到的错误是:

from neomodel import (StructuredNode, StringProperty, UniqueIdProperty)
from .event import Event

class myNode(StructuredNode):
    # Properties
    uid = UniqueIdProperty()
    XXX = StringProperty(required=True, unique_index=True)
    YYY = StringProperty(required=True)
    ZZZ = StringProperty(required=True)

我询问了chatGPT和GitHub copilot,得到的答复是我可以在设置中设置一个虚拟引擎,就像这样

django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check the settings documentation for more details.

但这没有帮助。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.dummy'
    }
}

有人有线索吗?我查找了文档,但我能找到的只是这些使用 Neo4j 和 Django 的巴拿马文件数据库的教程(

像这里 ,但它们也只是访问数据库,但从不 创建 新节点、关系或以任何方式更改它们。 这可能吗?或者我需要自己创建一个引擎吗?

我使用

djangorestframework 3.15.1 neomodel 5.3.1 我是应用程序的新手我刚刚开始并选择 Django 只是因为 Python 是我最了解的语言,所以如果您的答案是为一个完全的新手写的。 neo4j 4.4.34

I am new to app development. I have just started and chose Django just because Python is the language I know best, so please if you answer write for a complete newbie.


错误信息 "settings.DATABASES is improperly configured. Please supply the ENGINE value" 表明 Django 仍然在尝试使用关系数据库作为默认数据库。尽管你正在使用 Neo4j,但 Django 默认情况下配置为使用关系数据库。

为了解决这个问题,你需要告诉 Django 不再使用默认数据库。你可以通过在 settings.py 文件中将 DATABASES 设置为空字典来实现:

DATABASES = {}

这样 Django 就不会尝试连接到任何关系数据库了。

确保你的代码中没有其他地方依赖于 Django 的 ORM ,因为你正在使用 Neo4j 来代替它。

以下是一些关于使用 django_neomodel neomodel 在 Neo4j 中创建节点的额外提示:

  1. 确保 Neo4j 数据库正在运行。 你可以在浏览器中访问 http://localhost:7474/ 来确认它是否正在运行。
  2. 验证你的 NEOMODEL_NEO4J_BOLT_URL 设置是否正确。 确保用户名、密码和端口号正确无误。
  3. 在执行任何数据库操作之前,请先连接到 Neo4j 数据库。 你可以在 settings.py 文件中添加以下代码来实现这一点:
from neomodel import db
db.set_connection(NEOMODEL_NEO4J_BOLT_URL)
  1. 确保你已将 neomodel 导入到你的 models.py views.py 文件中。
from neomodel import StructuredNode, StringProperty, UniqueIdProperty
  1. 在你的视图中,使用 save() 方法将新节点保存到数据库。
from .models import myNode

class RegisterView(View):
    def post(self, request):
        new_node = myNode(
            XXX=request.POST['XXX'],
            YYY=request.POST['YYY'],
            ZZZ=request.POST['ZZZ']
        )
        new_node.save() 
        # ... 返回响应 ...

通过进行这些更改,你应该能够使用 django_neomodel neomodel 在 Neo4j 中成功创建节点。

标签:python,django,neo4j
From: 78789674

相关文章

  • Python 中 __get__ 方法的内部原理
    我正在摆弄描述符,结果碰壁了。我以为我可以像使用任何其他方法一样直接调用它,但显然,它似乎不一致或者我遗漏了一些东西。假设我有一个用作描述符的坐标类:|||还有一个Point类,它有2个坐标属性:classCoordinate:def__set_name__(self,owner,name):self._na......
  • 使用带有私钥的云前端生成签名 URL 的问题..使用 Python 3.7 为带有空格的 S3 对象生
    我在使用Python3.7为S3对象生成签名URL时遇到问题。具体来说,键中带有空格的对象的URL会导致“访问被拒绝”错误,而没有空格的对象的URL通常工作正常。但是,并非所有不带空格的对象都能正常工作,带空格的对象始终会失败。fromdatetimeimportdatetime,timedeltaimpo......
  • 有没有更好的方法来在存储库中的一组 python 程序之间共享公共代码
    当我想要快速、轻松地做许多不同的事情时,我会选择Python-即我总是会得到许多Python“程序”-例如一组脚本-或者如果我正在玩一些东西,一堆测试程序等-即始终是许多不同程序的松散集合。但是,我会分享某些内容。例如,如果我正在使用AI-我可能有30个左右完全不相......
  • 如何在Python中从两个不同长度的列表创建DataFrame,为第二个列表中的每个值重复第一个
    我是一个超级初学者,所以请耐心等待。我觉得这应该很容易,但我无法弄清楚。我不确定是否应该创建两个列表,然后将它们组合起来,或者是否有办法以这种方式直接创建DataFrame。我需要一列包含这些值:df=pd.DataFrame({'x1':np.linspace(-2.47,2.69,num=101)})然后我将值A......
  • Python multiprocessing.connection.Connection 的行为不符合规范
    根据python规范,recv()pythonConnection的方法,(从multiprocessing.Pipe()返回,当管道为空且管道的另一端关闭时抛出EOFError(这里参考:https://docs.python.org/3.9/library/multiprocessing.html#multiprocessing.connection.Connection.re......
  • 使用 python Flask 发送邮件中的图像
    我想发送一封包含html代码和图像的电子邮件但在gmail中它说图像已附加,我不想要这样,我只想要电子邮件正文中的图像。html_content=f"<imgsrc="cid:banner"alt=""style="width:80%;">"msg=MIMEMultipart('related')html_part=MIMEText(html_c......
  • 在 python requests modul 中,如何检查页面是否使用“POST”方法或“GET”方法
    如何使用python“requests”模块检查页面是否使用“GET”方法或“POST”方法。我期望输出为True或False,或者GET或Post预期代码:importrequestsurl=f"www.get_example.com"response=requests.get(url)ifresponse.check_get==True:print("get")你......
  • VS Code Python - 如果括号(括号、大括号等)未关闭,内联建议不起作用
    我遇到的问题是,当我在未闭合的括号或方括号“内部”开始变量名称时,VSCode将不会显示任何建议。但是,如果在键入变量名称之前闭合括号,则建议效果很好。如果我可以避免它,我宁愿不将自动完成括号关闭设置为True也不使用TabOut扩展。第一个屏幕截图显示建议在闭括号/方......
  • 在 Azure 上部署代码时使用 Python 的多处理模块是否有意义?
    我们的团队在Azure机器学习(AML)上部署了一个Python脚本来处理存储在Azure存储帐户上的文件。我们的管道由一个ForEach活动组成,该活动调用每个或列出的文件的Python脚本。从Azure数据工厂(ADF)运行它会触发多个单独的管道同时运行......
  • 我已成功安装 pypdf2 但无法将其导入到我的 python 文件中
    我已经成功安装了pypdf2模块,但在导入它时,我发现该模块丢失了。我尝试使用fromPyPDF2importPdfReader导入,但它不起作用此问题的各种解决方案是什么?在尝试导入PyPDF2时遇到问题。以下是可能导致此问题的一些常见原因和解决方案:安......