-
Notifications
You must be signed in to change notification settings - Fork 0
/
OperacionesConPersonas.py
96 lines (88 loc) · 3.46 KB
/
OperacionesConPersonas.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
#!usr/bin/python3
import sys
from datetime import date
sys.path.append("../")
#La unica forma de importar es subir un directorio, pero me parece feo
from Modelo.Persona import Persona
from Controlador.ConectarConBaseDeDatos import ConectarConBaseDeDatos
class OperacionesConPersonas():
def insertarPersona(self, laPersona):
instancia = ConectarConBaseDeDatos()
cursor = instancia.obtenerCursor()
filas = 0
sql = "insert into Personas values (%s, %s, %s, %s, %s, %s)"
try:
filas = cursor.execute(sql, (laPersona.getDNI(), laPersona.getPrimerNombre(), laPersona.getSegundoNombre(), laPersona.getPrimerApellido(), laPersona.getSegundoApellido(), laPersona.getFechaDeNacimiento(),))
instancia.confirmarSentencia()
except Exception as e:
instancia.revertirSentencia()
return "Ha ocurrido un error "+e.args#Los errores nunca deben pasar silenciosamente
if filas == 0:
return "No se han insertado registros"
else:
return "Se ha insertado "+str(filas)+" registro(s)"
def buscarPersonaPorDNI(self, dni):
instancia = ConectarConBaseDeDatos()
cursor = instancia.obtenerCursor()
filas = 0
sql = "select * from Personas where DNI = %s;"
try:
filas = cursor.execute(sql, (dni,))#esto evita que realice inyección de codigo sql
instancia.confirmarSentencia()
except Exception as e:
instancia.revertirSentencia()
return "Ha ocurrido un error "+e.args
if(filas == 0):
return "No hay registros"
registro = cursor.fetchone()#Sacar uno
laPersona = Persona(registro[0], registro[1], registro[2], registro[3], registro[4], registro[5])
return laPersona
def listarPersonas(self):#Se lista por nombres o apellidos
instancia = ConectarConBaseDeDatos()
cursor = instancia.obtenerCursor()
filas = 0
sql = "SELECT * FROM Personas;"
try:
filas = cursor.execute(sql)
instancia.confirmarSentencia()
except Exception as e:
instancia.revertirSentencia()
return "Ha ocurrido un error "+e.args
if filas == 0:
return "No hay registros"
listaDePersonas = []
for registro in cursor.fetchall():
listaDePersonas.append(Persona(registro[0], registro[1], registro[2], registro[3], registro[4], registro[5]))
return listaDePersonas
def eliminarPersona(self, laPersona):
instancia = ConectarConBaseDeDatos()
cursor = instancia.obtenerCursor()
filas = 0
sql = "delete from Personas where DNI = %s"
try:
filas = cursor.execute(sql, laPersona.getDNI())
instancia.confirmarSentencia()
except Exception as e:
instancia.revertirSentencia()
return "Ha ocurrido un error "+e.args
if filas == 0:
return "No se ha podido eliminar"
else:
return "Se han borrado "+str(filas)+" registro(s)"
def actualizarPersona(self, laPersona):
instancia = ConectarConBaseDeDatos()
cursor = instancia.obtenerCursor()
filas = 0
sql = "update Personas set PrimerNombre = %s, SegundoNombre = %s, PrimerApellido = %s, SegundoApellido = %s, FechaDeNacimiento = %s where DNI = %s"
try:
filas = cursor.execute(sql, (laPersona.getPrimerNombre(), laPersona.getSegundoNombre(), laPersona.getPrimerApellido(), laPersona.getSegundoApellido(), laPersona.getFechaDeNacimiento(), str(laPersona.getDNI())))
instancia.confirmarSentencia()
except Exception as e:
instancia.revertirSentencia()
return "Ha ocurrido un error "+e.args
if filas == 0:
return "No se ha podido actualizar"
else:
return "Se ha actualizado "+str(filas)+" registro(s)"
if __name__=='__main__':
print("No se espera que este codigo sea ejecutado sin su contexto")