Skip to content

Neo4j 2.0 #241

@atomos

Description

@atomos

Hi,

I'm just starting out using Neo4j and I'd like to use 2.0 (I have 2.0.1 community installed). I see that neo4django was only tested against neo4j 1.8.2-1.9.4, but have people gotten it working with 2.x? I installed the gremlin plugin but can't create or query through neo4django.

create:

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: []

query:

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())

My model is incredibly complex:

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

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions