2012-04-13 5 views
3

私はこれらのドキュメントを使ってPythonに埋め込まれたNeo4jのグラフを作ろうとしています: "許容されるプロパティ値には文字列、数字、ブール値、それらのプリミティブの配列が含まれます。だから、私は文字列のリストを構築しようとしているし、リストを追加します。Pythonに埋め込まれたNeo4jのリストを追加するには?

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' 

、これはどのように行われていますか?

+0

testNode ['stringList'] + = ["three"]は動作しますが、なぜ – AntonS

答えて

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 
+0

とdb.transactionsが必要かわかりません。ドキュメントから: "データベースへのすべての書き込み操作をトランザクション内から実行する必要があります。これにより、データベースが矛盾した状態になることはありません。 – McPedr0

+0

私は自分の答えに貧弱な言葉を使いました。私はそれを確実に含めるように言いました。あなたがいるならば、次のことを試してみてください。ありがとうございました。 – zallarak

1

まあ、エラーはそれをすべて言います。そのオブジェクトにはappend()メソッドがありません。

なぜですか?私の最初の考えは、実際のP​​ythonリストではなく、JavaとPythonの間の変換を処理するのはブリッジオブジェクト( "java.lang.String []"はJavaのString配列型です)です。それをリストにしてみてください

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"]を意味信じています。

ブリッジオブジェクトの理論を簡単に確認するには、print type(testNode['stringList'])などとお試しください。

+0

@ user890477、これはまったく役に立ちましたか? –

+0

私はPythonでリスト全体を構築することにしました。代わりにJavaを避けて永遠にRESTクライアントに切り替えました。 – McPedr0

+0

あなたのlucene-querybuilderをダウンロードしました。すべての素晴らしい作品をありがとう! – McPedr0

関連する問題