2

我刚开始使用 Neo4j,我想使用 2.0(我安装了 2.0.1 社区)。我看到 neo4django 只针对 neo4j 1.8.2-1.9.4 进行了测试,但是人们是否让它与 2.x 一起使用?我安装了 gremlin 插件,但无法通过 neo4django 创建或查询。

创造:

In [8]: NeoProfile.objects.create(profile_id=1234)
[INFO] requests.packages.urllib3.connectionpool#214: Resetting dropped connection: localhost
---------------------------------------------------------------------------
StatusException                           Traceback (most recent call last)
/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in <module>()
----> 1 NeoProfile.objects.create(profile_id=1234)

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/manager.pyc in create(self, **kwargs)
     41
     42     def create(self, **kwargs):
---> 43         return self.get_query_set().create(**kwargs)
     44
     45     def filter(self, *args, **kwargs):

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/query.pyc in create(self, **kwargs)
   1295         if 'id' in kwargs or 'pk' in kwargs:
   1296             raise FieldError("Neo4j doesn't allow node ids to be assigned.")
-> 1297         return super(NodeQuerySet, self).create(**kwargs)
   1298
   1299     #TODO would be awesome if this were transactional

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/django/db/models/query.pyc in create(self, **kwargs)
    375         obj = self.model(**kwargs)
    376         self._for_write = True
--> 377         obj.save(force_insert=True, using=self.db)
    378         return obj
    379

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/base.pyc in save(self, using, **kwargs)
    315
    316     def save(self, using=DEFAULT_DB_ALIAS, **kwargs):
--> 317         return super(NodeModel, self).save(using=using, **kwargs)
    318
    319     @alters_data

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/django/db/models/base.pyc in save(self, force_insert, force_update, using)
    461         if force_insert and force_update:
    462             raise ValueError("Cannot force both insert and updating in model saving.")
--> 463         self.save_base(using=using, force_insert=force_insert, force_update=force_update)
    464
    465     save.alters_data = True

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/base.pyc in save_base(self, raw, cls, origin, force_insert, force_update, using, *args, **kwargs)
    331
    332         is_new = self.id is None
--> 333         self._save_neo4j_node(using)
    334         self._save_properties(self, self.__node, is_new)
    335         self._save_neo4j_relationships(self, self.__node)

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/base.pyc in _save_neo4j_node(self, using)

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/base.pyc in trans_method(func, *args, **kw)
     95                 #TODO this is where generalized transaction support will go,
     96                 #when it's ready in neo4jrestclient
---> 97                 ret = func(*args, **kw)
     98                 #tx.commit()
     99                 return ret

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/base.pyc in _save_neo4j_node(self, using)
    359             self.__node = conn.gremlin_tx(script, types=type_hier_props,
    360                                           indexName=self.index_name(),
--> 361                                           typesToIndex=type_names_to_index)
    362         return self.__node
    363

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/neo4jclient.pyc in gremlin_tx(self, script, **params)
    177         will be wrapped in a transaction.
    178         """
--> 179         return self.gremlin(script, tx=True, **params)
    180
    181     def cypher(self, query, **params):

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/neo4jclient.pyc in gremlin(self, script, tx, raw, **params)
    166             try:
    167                 return send_script(include_unloaded_libraries(lib_script),
--> 168                                    params)
    169             except LibraryCouldNotLoad:
    170                 if i == 0:

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/neo4jclient.pyc in send_script(s, params)
    151             if raw:
    152                 execute_kwargs['returns'] = RETURNS_RAW
--> 153             script_rv = ext.execute_script(s, params=params, **execute_kwargs)
    154             if isinstance(script_rv, basestring):
    155                 if LIBRARY_ERROR_REGEX.match(script_rv):

/Users/atomos/workspace/Project-Vitamin/src/neo4j-rest-client/neo4jrestclient/client.py in __call__(self, *args, **kwargs)
   2313             except (ValueError, AttributeError, KeyError, TypeError):
   2314                 pass
-> 2315             raise StatusException(response.status_code, msg)
   2316
   2317     def __repr__(self):

StatusException: Code [400]: Bad Request. Bad request syntax or unsupported method.
Invalid data sent: javax.script.ScriptException: groovy.lang.MissingMethodException: No signature of method: groovy.lang.MissingMethodException.setMaxBufferSize() is applicable for argument types: () values: []

询问:

In [9]: NeoProfile.objects.filter(profile_id=1234)
Out[9]: ---------------------------------------------------------------------------
RuntimeError                              Traceback (most recent call last)
/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/django/core/management/commands/shell.pyc in <module>()
----> 1 NeoProfile.objects.filter(profile_id=1234)

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/IPython/core/displayhook.pyc in __call__(self, result)
    236             self.start_displayhook()
    237             self.write_output_prompt()
--> 238             format_dict = self.compute_format_data(result)
    239             self.write_format_data(format_dict)
    240             self.update_user_ns(result)

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/IPython/core/displayhook.pyc in compute_format_data(self, result)
    148             MIME type representation of the object.
    149         """
--> 150         return self.shell.display_formatter.format(result)
    151
    152     def write_format_data(self, format_dict):

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/IPython/core/formatters.pyc in format(self, obj, include, exclude)
    124                     continue
    125             try:
--> 126                 data = formatter(obj)
    127             except:
    128                 # FIXME: log the exception

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/IPython/core/formatters.pyc in __call__(self, obj)
    445                 type_pprinters=self.type_printers,
    446                 deferred_pprinters=self.deferred_printers)
--> 447             printer.pretty(obj)
    448             printer.flush()
    449             return stream.getvalue()

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/IPython/lib/pretty.pyc in pretty(self, obj)
    358                             if callable(meth):
    359                                 return meth(obj, self, cycle)
--> 360             return _default_pprint(obj, self, cycle)
    361         finally:
    362             self.end_group()

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/IPython/lib/pretty.pyc in _default_pprint(obj, p, cycle)
    478     if getattr(klass, '__repr__', None) not in _baseclass_reprs:
    479         # A user-provided repr.
--> 480         p.text(repr(obj))
    481         return
    482     p.begin_group(1, '<')

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/django/db/models/query.pyc in __repr__(self)
     70
     71     def __repr__(self):
---> 72         data = list(self[:REPR_OUTPUT_SIZE + 1])
     73         if len(data) > REPR_OUTPUT_SIZE:
     74             data[-1] = "...(remaining elements truncated)..."

/Users/atomos/workspace/Project-Vitamin/lib/python2.7/site-packages/django/db/models/query.pyc in __len__(self)
     85                 self._result_cache = list(self.iterator())
     86         elif self._iter:
---> 87             self._result_cache.extend(self._iter)
     88         if self._prefetch_related_lookups and not self._prefetch_done:
     89             self._prefetch_related_objects()

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/query.pyc in iterator(self)
   1274         using = self.db
   1275         if not self.query.can_filter():
-> 1276             for model in self.query.execute(using):
   1277                 yield model
   1278         else:

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/query.pyc in execute(self, using)
   1161         conn = connections[using]
   1162
-> 1163         groovy, params = self.as_groovy(using)
   1164
   1165         raw_result_set = conn.gremlin_tx(groovy, **params) if groovy is not None else []

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/query.pyc in as_groovy(self, using)
    925         # add the typeNodeId param, either for type verification or initial
    926         # type tree traversal
--> 927         cypher_params['typeNodeId'] = self.model._type_node(using).id
    928
    929         type_restriction_expr = """

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/base.pyc in _type_node(cls, using)
    411             return cls.__type_node_memoized(using)
    412         else:
--> 413             return cls.__type_node_classmethod(using)
    414
    415     @classmethod

/Users/atomos/workspace/Project-Vitamin/src/neo4django/neo4django/db/models/base.pyc in __type_node(cls, using)
    394             script_rv = conn.gremlin_tx(script, types=type_hier_props)
    395         except Exception, e:
--> 396             raise RuntimeError(error_message, e)
    397         if not hasattr(script_rv, 'properties'):
    398             raise RuntimeError(error_message + '\n\n%s' % script_rv)

RuntimeError: ('The type node for class NeoProfile could not be created in the database.', StatusException())

我的模型非常复杂:

class NeoProfile(neomodels.NodeModel):
    profile_id = neomodels.IntegerProperty(indexed=True)
4

0 回答 0