0

使用 py2neo 查询 neo4j 时出现错误,似乎无法解决。我的代码:

data, metadata = cypher.execute(self._db, 'START s=node:pages(title="%s") MATCH (s)-[r]->(n) RETURN n.title' % topic)

和错误

  File "/usr/local/lib/python2.7/dist-packages/py2neo/cypher.py", line 50, in execute
    results = query.execute(**params or {})
  File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 1011, in execute
    return CypherResults(self._execute(**params))
  File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 1053, in __init__
    self._data = [record(*_hydrated(row)) for row in content["data"]]
  File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 178, in _hydrated
    return type(data)([_hydrated(datum) for datum in data])
  File "/usr/local/lib/python2.7/dist-packages/py2neo/neo4j.py", line 177, in _hydrated
    elif is_collection(data):
  File "/usr/local/lib/python2.7/dist-packages/py2neo/util.py", line 134, in is_collection
    hasattr(None, obj)
None: 'ascii' codec can't encode character u'\xeb' in position 5: ordinal not in range(128)

有什么线索吗?

谢谢

4

2 回答 2

1

这看起来可能是 py2neo 中的一个错误,由查询结果数据中的意外字节序列或字符集触发。您能否详细说明您希望返回的数据以及您是否使用 UTF-8?

于 2013-09-27T22:35:34.533 回答
0

我会说 中有一个非 ASCII 字节topic,这可能是导致它的原因。如果你有这个问题,你可能会尝试

data, metadata = cypher.execute(self._db, u'START s=node:pages(title="%s") MATCH (s)-[r]->(n) RETURN n.title' % topic)

这实际上可能会解决您的问题。(我只是对此发表评论,但我不能,抱歉。)如果这不起作用,请尝试:

(u'STATE s=node:...' ... % topic.decode('utf-8')).encode('utf-8')

这样就可以了。

于 2013-09-27T20:13:43.597 回答