I've this small snipped of code that load a file in an embedded Neo4j Database.
With this code I've two problems and I don't find documentation to solve it.
I'm following the samples of the documentation to create an index, but: a) How can I detect if the index exists yet? The documentation explais that if the index already exists, it's returned, but in my case it returns an error.
b) When I get the a node from the index I get an error
from neo4j import GraphDatabase, INCOMING, Evaluation
# Create a database
db = GraphDatabase("c:/temp/graph")
with db.transaction:
# Create an index for "users" nodes
# to look for them using some of the properties
# HERE I GET AN ERROR WHEN THE INDEX EXISTS PREVIOUSLY, BUT THE DOCUMENTATION EXPLAINS THE OPOSITE.
users_idx = db.node.indexes.create('users')
# Create the "users_reference" node to connect all "users" nodes to here
users_reference = db.node()
db.reference_node.USERS(users_reference, provider='lucene', type='fulltext')
'''
Content of the file
1,Marc
2,Didac
3,Sergi
4,David
'''
f = open("../files/users","r")
for line in f:
v = line.split(",")
i = v[0]
name = v[1]
# All write operations happen in a transaction
user = db.node(id=i, name=name)
user.INSTANCE_OF(users_reference)
users_idx['id'][i] = user
# I suppose that here, the transaction is closed
# I want get the node whose property "Id" has value "3"
# to print the property "name" of the node with id = 3
# HERE I GET AN ERROR WHEN THE THERE'RE MULTIPLE NODES WITH THE SAME VALUE FOR THE PROPERTY "ID"
c = users_idx['id']['3'].single
print c['name']
'''
If the file has a duplicated ID, the previouly code returns an error...
1,Marc
1,Marc_2
1,Marc_3
2,Didac
3,Sergi
4,David
'''
# Always shut down your database when your application exits
db.shutdown()