Skip to content

Commit 892b4cf

Browse files
authored
test mongo merge mongodb#245 example file
1 parent ea50923 commit 892b4cf

File tree

1 file changed

+150
-0
lines changed

1 file changed

+150
-0
lines changed

examples/build3_mongo.py

+150
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,150 @@
1+
from neo4j import GraphDatabase
2+
import os
3+
import time
4+
5+
class NeoApp:
6+
7+
def __init__(self, uri, user, password):
8+
self.driver = GraphDatabase.driver(uri, auth=(user, password))
9+
10+
def close(self):
11+
self.driver.close()
12+
13+
def crear_nodo_persona(self, nombre, dni, telefono, trabajo):
14+
with self.driver.session() as session:
15+
result = session.execute_write(self.crear_nodo_persona_neo, nombre, dni, telefono, trabajo)
16+
print(result)
17+
18+
def crear_nodo_delito(self, tipo, descripcion, fecha, hora, barrio):
19+
with self.driver.session() as session:
20+
result = session.execute_write(self.crear_nodo_delito_neo, tipo, descripcion, fecha, hora, barrio)
21+
print(result)
22+
23+
# Función para crear Relacion (persona sospechoso/testigo/victima de delito)
24+
def crear_relacion_sospechoso_delito(self, nombre_persona, numero_delito, relacion):
25+
with self.driver.session() as session:
26+
result = session.execute_write(self.crear_nodo_delito_neo, nombre_persona, numero_delito, relacion)
27+
print(result)
28+
29+
30+
def dueno_auto(self):
31+
with self.driver.session() as session:
32+
result = session.execute_write(self.dueno_auto_neo)
33+
print(result)
34+
35+
def sospechosos_delito(self, delito):
36+
with self.driver.session() as session:
37+
results = session.execute_write(self.sospechosos_delito_neo, delito)
38+
for result in results:
39+
print(result)
40+
41+
42+
@staticmethod
43+
def crear_nodo_persona_neo(tx, nombre, dni, telefono, trabajo):
44+
result = tx.run("CREATE (persona1:PERSONA{nombre:$nombre, documento:$documento, telefono:$telefono trabajo:$trabajo})", nombre=nombre, dni=dni, telefono=telefono, trabajo=trabajo)
45+
return result.single()[0]
46+
47+
@staticmethod
48+
def crear_nodo_delito_neo(tx, tipo, descripcion, fecha, hora, barrio):
49+
result = tx.run("CREATE (delito1:DELITO{tipo:$robo, descripcion:$descripcion, fecha:$fecha, hora:$hora, barrio:$barrio})", tipo=tipo, descripcion=descripcion, fecha=fecha, hora=hora, barrio=barrio)
50+
return result.single()[0]
51+
52+
@staticmethod
53+
def dueno_auto_neo(tx):
54+
result = tx.run("""MATCH (dueno:PERSONA)-[:DUENO]-> (bien:BIEN) WHERE ((:PERSONA{nombre: "Carlos Rojo"})-[:SOSPECHOSO]-> (:DELITO)-[:ASOCIADO]-> (bien:BIEN)) RETURN dueno.nombre""")
55+
return result.single()[0]
56+
57+
@staticmethod
58+
def sospechosos_delito_neo(tx, delito):
59+
results = tx.run("""MATCH (sospechoso:PERSONA)-[:SOSPECHOSO]-> (delito:DELITO{descripcion:$delito}) RETURN sospechoso.nombre""", delito=delito)
60+
return results
61+
62+
@staticmethod
63+
def crear_relacion_sospechoso_delito_neo(tx, nombre_persona, numero_delito, relacion):
64+
relacion = relacion.capitalize() # para que quede en mayuscula
65+
result = tx.run("""MATCH (persona:PERSONA{nombre:$nombre_persona}) MATCH (delito:DELITO{numero:$numero_delito}) CREATE (persona)-[:$relacion]->(delito)""", nombre_persona=nombre_persona, numero_delito=numero_delito, relacion=relacion)
66+
return result.single()[0]
67+
68+
69+
70+
71+
72+
print("Bienvenido")
73+
os.system("cls")
74+
print("Elija una operacion (ingrese el numero)")
75+
print("1. Crear un nodo")
76+
print("2. Crear una relacion")
77+
print("3. Quien es el dueño del auto por el cual se lo acusa a Carlos")
78+
print("4. Quienes son los sospechosos de un delito determinado")
79+
80+
neo = NeoApp("bolt://localhost:7474", "neo4j", "uade1234")
81+
82+
def menu():
83+
84+
opcion = input("numero de la operacionr: ")
85+
86+
if opcion == "1":
87+
os.system("cls")
88+
print("1 Crear un nodo ------------")
89+
90+
# input tipo de nodo (persona, delito)
91+
tipo_nodo = input("tipo de nodo (persona, delito): ")
92+
93+
if tipo_nodo == "persona":
94+
nombre = input("nombre: ")
95+
dni = input("dni: ")
96+
telefono = input("telefono: ")
97+
trabajo = input("trabajo: ")
98+
99+
neo.crear_nodo_persona(nombre, dni, telefono, trabajo)
100+
101+
elif tipo_nodo == "delito":
102+
tipo = input("tipo: ")
103+
descripcion = input("descripcion: ")
104+
fecha = input("fecha: ")
105+
hora = input("fecha: ")
106+
barrio = input("barrio: ")
107+
108+
neo.crear_nodo_delito(tipo, descripcion, fecha, hora, barrio)
109+
110+
else:
111+
print("tipo de nodo incorrecto")
112+
113+
time.sleep(5)
114+
menu()
115+
116+
elif opcion == "2":
117+
os.system("cls")
118+
print("2 Crear una relacion ------------")
119+
nombre_persona= input("nombre persona: ")
120+
numero_delito = input("numero delito: ")
121+
relacion = input("relacion (sospechoso, testigo, victima): ")
122+
123+
# se podría agregar si la persona no existe (hay que hacer otra query de neo)
124+
neo.crear_relacion_sospechoso_delito(nombre_persona, numero_delito, relacion)
125+
time.sleep(5)
126+
menu()
127+
128+
129+
elif opcion == "3":
130+
os.system("cls")
131+
print("3 Quien es el duseño del auto por el cual se lo acusa a Carlos ------------")
132+
neo.dueno_auto()
133+
time.sleep(5)
134+
menu()
135+
136+
elif opcion == "4":
137+
os.system("cls")
138+
print("4 Quienes son los sospechosos de un hecho determinado ------------")
139+
delito = input("delito: ")
140+
neo.sospechosos_delito(delito)
141+
time.sleep(5)
142+
menu()
143+
144+
else:
145+
os.system("cls")
146+
print("Opcion incorrecta")
147+
menu()
148+
149+
150+
menu()

0 commit comments

Comments
 (0)