无法设置 neo4jDjango 图形数据库:对象没有属性 'db_type'



我正在启动一个项目,但在执行

manage.py sql *ApplicationName*

回溯如下:

  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 443, in execute_from_command_line
    utility.execute()
  File "/usr/lib/python2.7/site-packages/django/core/management/__init__.py", line 382, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 196, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 232, in execute
    output = self.handle(*args, **options)
  File "/usr/lib/python2.7/site-packages/django/core/management/base.py", line 304, in handle
    app_output = self.handle_app(app, **options)
  File "/usr/lib/python2.7/site-packages/django/core/management/commands/sql.py", line 19, in handle_app
    return u'n'.join(sql_create(app, self.style, connections[options.get('database')])).encode('utf-8')
  File "/usr/lib/python2.7/site-packages/django/core/management/sql.py", line 31, in sql_create
    output, references = connection.creation.sql_create_model(model, style, known_models)
  File "/usr/lib/python2.7/site-packages/django/db/backends/creation.py", line 44, in sql_create_model
    col_type = f.db_type(connection=self.connection)
  File "/usr/lib/python2.7/site-packages/neo4django/utils.py", line 161, in __getattr__
    return getattr(super(AttrRouter, self), name)
AttributeError: 'super' object has no attribute 'db_type'

在多次尝试解决问题之后,该代码几乎是本教程的简单示例。

setings.py 也应该是正确的,因为它们是从neo4Django教程复制而来的。

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', 
        'NAME': 'Database.db',  
    }
}
NEO4J_DATABASES = {
    'default' : {
        'HOST':'localhost',
        'PORT':7474,
        'ENDPOINT':'/db/data'
    }
}
DATABASE_ROUTERS = ['neo4django.utils.Neo4djangoIntegrationRouter']

Neo4j服务器正在运行,在sqllite和mysql数据库中,事情正在工作,所以问题一定出在neo4j或neo4django端。当在域中不使用neo4Django模型时,事情也可以工作。

模型如图所示:

from neo4django.db import models
    class Person(models.NodeModel):
        name = models.StringProperty()
        age = models.IntegerProperty()
        friends = models.Relationship('self',rel_type='friends_with')

manage.py sql appname命令(复制自 django 文档)

打印给定应用名称的创建表 SQL 语句。

因此,如果您要使用Νeo4j而不是MySQLSQLite,则无需获取创建表SQL语句。除此之外,您可能希望更好地运行 syncdb 命令,但您再次使用的不是关系数据库,而是Neo4j,因此您也不需要运行。

您应该在settings.pyDATABASES声明中包含 db 的唯一原因只是因为,如果不这样做,将引发ImproperlyConfigured错误。

所以简单的答案是错误是正确的,只是不要运行任何与关系数据库相关的 django 命令。

还有一个提示,不要使用 pypi 包,而是使用 github 版本 https://github.com/scholrly/neo4django ( pip install -e git+https://github.com/scholrly/neo4django/#egg=neo4django

最新更新