我正在开发一个网络应用程序。对于后端,我选择了 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 中创建节点的额外提示:
-
确保 Neo4j 数据库正在运行。
你可以在浏览器中访问
http://localhost:7474/
来确认它是否正在运行。 -
验证你的
NEOMODEL_NEO4J_BOLT_URL
设置是否正确。 确保用户名、密码和端口号正确无误。 -
在执行任何数据库操作之前,请先连接到 Neo4j 数据库。
你可以在
settings.py
文件中添加以下代码来实现这一点:
from neomodel import db
db.set_connection(NEOMODEL_NEO4J_BOLT_URL)
-
确保你已将
neomodel
导入到你的models.py
和views.py
文件中。
from neomodel import StructuredNode, StringProperty, UniqueIdProperty
-
在你的视图中,使用
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 中成功创建节点。