我看到neo4j-bolt-driver
. 当我Pycharm
用来运行我的代码时,它运行良好,对于单个查询,neo4j
我得到以下响应:
type: neo4j.node # I pulled out the type of the element.
<Node id=3820 labels={'city'} properties={'ID': 'xddy', 'name': 'california'}>
现在,当我打包我的代码并从中创建一个.egg
,然后使用终端运行脚本以获取相同数据库的相同输入时,我得到以下响应:
type: neo4j.node # I pulled out the type of the element.
(_3820:city {ID: 'xddy', name: 'california'})
现在看看响应的差异,类型相同,只是keys
缺少对象。
这导致
AttributeError
. 更糟糕的是我必须手动将数据解析成一个字典,以便我可以处理它。
副作用:
try:
props = node[admin].properties
node_chain[list(node[admin].labels)[0]] = props
address.append(props['name'])
except AttributeError:
# try to convert (_3820:city {ID: 'xddy', name: 'california'})
# to {'ID': 'xddy', 'name': 'california'}
# and add it to an existing dict with the key `city`
string_rep = str(node[admin])
splitted = string_rep.split('{')
label = splitted[0].split(':')[-1].strip()
payload_string = "{ " + splitted[1][:-1]
clean = payload_string.replace("'", " ").replace(":", "':'").replace(",", "','")\
.replace("{", "{'").replace("}", "'}")
temp_dict = ast.literal_eval(clean)
payload_dict = {k.strip(): v.strip() for k, v in temp_dict.items()}
address.append(payload_dict['name'])
node_chain[label] = payload_dict
我正在寻找两个答案:
- 螺栓驱动器中是否存在问题,或者只是我的代码从
egg
- 有没有更好的方法将无效内容解析为字典?