Не удается настроить графовую базу данных neo4jDjango: объект не имеет атрибута "тип БД"
Я начинаю проект, и я продолжаю получать эту ошибку при выполнении
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')
1 ответ:
Команда
manage.py sql appname(скопирована из документации django)Поэтому, если вы собираетесь использоватьВыводит инструкции CREATE TABLE SQL для заданных имен приложений.
Νeo4j, а неMySQLилиSQLite, нет необходимости получать инструкции CREATE TABLE SQL. Кроме того, вы, вероятно, хотели бы лучше выполнить командуsyncdb, но опять же вы используете не реляционную БД, аNeo4j, поэтому вам не нужно запускать ни то, ни другое.Единственная причина, по которой вы следует включить БД в объявление
DATABASESна вашемsettings.pyтолько потому, что, если вы этого не сделаете, будет вызвана ошибкаImproperlyConfigured.Таким образом, простой ответ заключается в том, что ошибка верна, просто не запускайте никаких команд Django, связанных с реляционной базой данных.
Еще один совет, не используйте пакет pypi, а версию github https://github.com/scholrly/neo4django (
pip install -e git+https://github.com/scholrly/neo4django/#egg=neo4django)