2016-05-30 56 views
8

Verilerden, el ile veri aktarma işlemlerini el ile Graph veritabanına geçirme üzerinde çalışıyorum. AşağıdaAttributeError: 'Graph' nesnesinin, Postgress'tan Neo4j'ye (Graph Database) veri aktarımı sırasında 'cypher' özelliği yoktur

yazdım gelmiş komut dosyası:

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) 

Hata:

AttributeError: 'Graph' object has no attribute 'cypher'

Ben sürümü 2.0.8 için py2neo güncelleyerek çözülebilir bu sorun.

pip uninstall py2neo 
pip install py2neo==2.0.8 

Ben py2neo belgelerine takip ediyorum.

üretim için hala alıyorum ederken:

AttributeError: 'Graph' object has no attribute 'cypher'

GET 404 response

ne sorun olabilir?

cevap

8

Bu sorunu da yaşadım. Benim durumumda py2neo v2 belgelerine bakıyordum ama makinemde py2neo v3 kuruldu. Eğer py2neo sürümünü kontrol ve .run ( {sorgu} )

The previous version of py2neo allowed Cypher execution through Graph.cypher.execute(). This facility is now instead accessible via Graph.run() and returns a lazily-evaluated Cursor rather than an eagerly-evaluated RecordList.

ile .cyper ( {sorgu} ) değiştirmelidir
0

Sorunu çözdüm. Sorun, py2neo sürümü ile yapıldı. Sürüm 2.08'i V2'de en son sürüm olarak yükledim.

py2neo izinli Graph.cypher.execute() aracılığıyla yürütme gerçekleştirin.

pip uninstall py2neo 
pip install py2neo==2.0.8