4

我正在尝试使用这些文档在 Neo4j python-embedded 中制作图表:http: //docs.neo4j.org/chunked/snapshot/python-embedded-reference-core.html “允许的属性值包括字符串、数字、布尔值,以及这些原语的数组”。所以,我正在尝试构建一个字符串列表,然后附加该列表。

from neo4j import GraphDatabase
db = GraphDatabase('/home/username/Neo4j/')
with db.transaction:
    testNode = db.node()
    testNode['stringList'] = ["one","two"]
    string_list_edit = testNode['stringList']
    string_list_edit.append("three")

给我这个错误:

AttributeError: 'java.lang.String[]' object has no attribute 'append'

这是怎么做到的?

4

2 回答 2

1

好吧,错误说明了一切。该对象没有append()方法。

为什么?我的第一个想法是它是一个桥对象(“java.lang.String[]”是 Java 中的 String 数组类型)来处理 Java 和 Python 之间的转换,而不是真正的 Python 列表。试着把它列个清单

string_list_edit = list(testNode['stringList'])
string_list_edit.append("three")

希望设置它仍然以相同的方式工作。

我认为这与 Python 中的 append 不太+=一样——当你不使用列表时,我相信字面意思是或者我可以看到使用奇怪的桥对象。+=string_list_edit = string_list_edit + "three"string_list_edit = string_list_edit + ["three"]

确认桥梁对象理论的一种简单方法 - 尝试 aprint type(testNode['stringList'])或类似的。

于 2012-04-20T18:46:22.183 回答
1

如果您粘贴所有代码,则可以评估它是否存在其他错误。查看文档:http ://docs.neo4j.org/chunked/snapshot/python-embedded-reference-core.html

你包括吗?

with db.transactions:

在你的代码之前?你必须这样做。另外,试试这个:

testNode['stringList'] = ["one","two"]
string_list_edit = testNode['stringList']
string_list_edit.append("three")
testNode['stringList'] = string_list_edit
于 2012-04-13T19:18:07.383 回答