Neo4Django - SyncDB不会创建表格和图形

时间:2013-05-30 07:16:26

标签: python django neo4django

我在基于django的应用程序中使用Neo4Django并尝试同时使用两个数据库:Neo4j和PostGIS。所以我按照文档(http://neo4django.readthedocs.org)和models.py中的建议配置了settings.py。

当我尝试运行syncdb时,我收到此消息

You just installed Django's auth system, which means you don't have any superusers defined.
    Would you like to create one now? (yes/no): yes
    Username (leave blank to use 'postgres'): 
    E-mail address: postgres@gmail.com
    Password: 
    Password (again): 
    Superuser created successfully.
    Installing custom SQL ...
    Installing indexes ...
    Installed 0 object(s) from 0 fixture(s)

但是当我检查表格和图表是否已创建时,我什么也没找到!

我正在使用django 1.4和neo4j 1.9.M05。

以下是我在settings.py中声明数据库的方法:

DATABASES = {
'default': {
     'ENGINE': 'django.contrib.gis.db.backends.postgis',
     'NAME': 'geodjango',
     'USER': 'postgres',


     }
}
NEO4J_DATABASES = {
    'default' : {
        'HOST':'127.0.0.1',
        'PORT':7474,
        'ENDPOINT':'/db/data/'
    }
}

DATABASE_ROUTERS = ['neo4django.utils.Neo4djangoIntegrationRouter']

我宣布我的models.py是这样的:

from neo4django.db import models
from django.contrib.gis.db import models as gis                             

class Airport(models.NodeModel):
    name = models.StringProperty()
    iata = models.StringProperty()
    icao= models.StringProperty()

    city = models.Relationship('self',rel_type='isAT')

#geographical database for storing entities coordinates
class pointsOfInterest(gis.Model):
    nodeid = gis.IntegerField()
    longitude = gis.FloatField()
    latitude = gis.FloatField()

    # GeoDjango-specific: a geometry field (MultiPolygonField), and
    # overriding the default manager with a GeoManager instance.
    objects = gis.GeoManager()

感谢您的帮助


修改

当我运行python manage.py sqlall testapp(其中testapp是我的应用程序并且在删除neo4j模型之后,否则它将无法工作),我得到允许创建表的sql:

BEGIN;
CREATE TABLE "testapp_pointsofinterest" (
    "id" serial NOT NULL PRIMARY KEY,
    "nodeid" integer NOT NULL,
    "longitude" double precision NOT NULL,
    "latitude" double precision NOT NULL
)
;
COMMIT;

之后我运行./manage.py syncdb并且只创建了pointsOfInterest表(不是图表)

postgres@anas-desktop:/home/anas/Desktop/testNeo4Django$ ./manage.py syncdb
Creating tables ...
Creating table testapp_pointsofinterest
Installing custom SQL ...
Installing indexes ...
Installed 0 object(s) from 0 fixture(s)

为什么代表我模型的节点没有在graphdb中创建?

1 个答案:

答案 0 :(得分:1)

实际上根本没有任何问题!

第一次运行./manager.py syncdb时,在sql数据库中创建了pointsOfInterest表,我没有注意到

对于以下尝试,我希望此命令将neo4j模型作为将要插入graphdb的未来节点的一种“根”节点插入(虽然看起来这个命令不会这样做) ,并关注以前的表没有添加的事实(虽然之前添加了,而Django没有替换现有的表)

问题解决了!