2013-10-31 25 views
2

我開始一個項目,我不斷收到此錯誤執行無法設置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') 

回答

2

manage.py sql appname命令(從Django文檔複製)

打印在CREATE對於給定的應用程序名稱(一個或多個)表的SQL語句。

所以如果你要使用Νeo4j而不是MySQLSQLite,沒有必要得到CREATE TABLE SQL語句。除此之外,您可能希望更好地運行syncdb命令,但再一次您不使用關係數據庫,而是使用Neo4j,因此您不需要同時運行。

您應該在settings.pyDATABASES聲明中包含db的唯一原因僅僅是因爲如果您不這樣做,將會引發ImproperlyConfigured錯誤。

所以簡單的答案是錯誤是正確的,只是不運行任何關係數據庫相關的Django命令。

還有一個提示,不要使用pypi包但是github版本https://github.com/scholrly/neo4djangopip install -e git+https://github.com/scholrly/neo4django/#egg=neo4django

相關問題