当数据包含非ascii数据时,尝试通过Bulbs将数据添加到Neo4J时出现Unicode错误。

以下代码失败:

from bulbs.model import Node
from bulbs.property import String
from bulbs.neo4jserver import Graph

class User(Node):
    element_type="user"
    name = String(nullable=False)

g = Graph()
g.add_proxy("users", User)

user_data = {u'name': u'Aname M\xf6ller'}

g.users.create(**user_data)


UnicodeEncodeError: 'ascii' codec can't encode character u'\xf6' in position 7: ordinal not in range(128)

通过bulbs.utils.ucodecs.unicode_escape_decode()函数中发生错误。

希望一些相关信息:

$>python -V
'2.7.3'

>>>type(user_data['name'])
type('unicode')

>>>import bulbs
>>>bulbs.__version__
'0.3'


Neo4J docs state将所有String对象都保存为unicode,那么为什么我的unicode数据不被接受?我希望我只是想念一些愚蠢的东西。

最佳答案

是的,这是一个错误。它已在灯泡0.3.23中修复:

https://github.com/espeed/bulbs/commit/7f104cdbc30f27ea76b036cfa0d0a694f074153e

09-03 18:02