web-dev-qa-db-ja.com

AttributeError: 'Graph'オブジェクトには、PostgresからNeo4j(グラフデータベース)へのデータの移行で属性 'cypher'がありません

Postgresからグラフデータベースへのデータの移行に手動で取り組んでいます。

私は以下のスクリプトを書きました:

import psycopg2
from py2neo import authenticate, Graph

authenticate("localhost:7474", "neo4j", "password")
n4j_graph = Graph("http://localhost:7474/db/data/")


try:
    conn=psycopg2.connect("dbname='db_name' user='user' password='password'")
except:
    print "good bye"

cur = conn.cursor()
try:
    cur.execute("""SELECT * from table_name""")
except:
    print "not found"
rows = cur.fetchall()


for row in rows:
    username = row[4]
    email = row[7]
    s = '''MERGE (u:User { username: "%(username)s"}) MERGE (e:Email { email: "%(email)s"}) CREATE UNIQUE (u)-[:BELONGS_TO]->(e)''' %{"username": username, "email": email}
    print s
    n4j_graph.cypher.execute(s)

エラー:

AttributeError: 'Graph'オブジェクトに属性 'cypher'がありません

この問題は、py2neoをバージョン2.0.8に更新することで解決しました。

pip uninstall py2neo
pip install py2neo==2.0.8

py2neo のドキュメントに従っています。

生産のために私はまだ得ています:

AttributeError: 'Graph'オブジェクトに属性 'cypher'がありません

GET404応答

何が問題になる可能性がありますか?

10
Usman Maqbool

私もこの問題を抱えていました。私の場合、 py2neov2 のドキュメントを見ていましたが、私のマシンには py2neov3py2neoバージョンを確認し、。cyper({query}with。run({query}

以前のバージョンのpy2neoでは、Graph.cypher.execute()を介してCypherを実行できました。この機能は、代わりにGraph.run()を介してアクセス可能になり、熱心に評価されたRecordListではなく、遅延評価されたCursorを返します。

15
Lucian Oprea

問題を解決しました。問題は_py2neo_のバージョンにありました。バージョン2.08がV2の最新版であるのに、バージョン3をインストールしました。

py2neoは、Graph.cypher.execute()を介してCypherの実行を許可しました。

_pip uninstall py2neo
pip install py2neo==2.0.8
_
4
Usman Maqbool