UnicodeEncodeError:灯泡和neo4j create Mod

2024-09-28 14:55:40 发布

您现在位置:Python中文网/ 问答频道 /正文

当数据包含非ascii数据时,我试图通过bulls向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.u函数中,通过codecs.unicode_escape_decode()。在

一些希望相关的信息:

^{pr2}$

Neo4J文档state所有字符串对象都保存为unicode,那么为什么我的unicode数据不被接受?我希望我只是错过了一些愚蠢的事情。在


Tags: 数据namefromimportnodestring错误ascii
2条回答

在用Python和unicode更新了自己之后,我解决了这个问题,不过只不过用try、catch来包装我的问题行,然后将问题数据编码为“utf-8”。不是最优雅的解决方案,但下面的代码似乎对我有用。在

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'}

try:
    g.users.create(**user_data)
except UnicodeEncodeError:
    for k, v in user_data.iteritems():
        try:
            user_data[k] = unicode.encode(v, 'utf-8')
        except TypeError:
            # Fails for non string values
            pass
    g.users.create(**user_data)

我唯一的问题就是这个。如果bulbs记录器处于活动状态,则在第一次调用create()时记录带有回溯的错误消息。不是破坏交易,只是有点烦人。在

没有在Python3上尝试过,有人想插嘴吗?在

是的,这是个虫子。固定在灯泡中0.3.23:

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

相关问题 更多 >