-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathsqlite_3.py
More file actions
191 lines (157 loc) · 6.07 KB
/
sqlite_3.py
File metadata and controls
191 lines (157 loc) · 6.07 KB
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
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
import sqlite3
import os
##DB = "docentes.db"
DB = r"C:\Users\Antonio\Documents\docentes.db"
print("Base usada:", os.path.abspath(DB))
def crear_tabla():
with sqlite3.connect(DB) as conn:
cursor = conn.cursor()
cursor.execute("""
CREATE TABLE IF NOT EXISTS docentes (
id INTEGER PRIMARY KEY AUTOINCREMENT,
nombre TEXT,
edad INTEGER,
materia TEXT,
estado TEXT
)
""")
conn.commit()
crear_tabla()
def agregar_docentes(nombre, edad, materia, estado):
with sqlite3.connect(DB) as conn:
cursor = conn.cursor()
cursor.execute(
"INSERT INTO docentes (nombre, edad, materia, estado) VALUES (?,?,?,?)",
(nombre, edad, materia, estado)
)
conn.commit()
def listar_docentes():
with sqlite3.connect(DB) as conn:
cursor = conn.cursor()
cursor.execute("SELECT nombre, edad, materia, estado FROM docentes")
return cursor.fetchall()
def buscar_por_nombre(nombre):
with sqlite3.connect(DB) as conn:
cursor = conn.cursor()
cursor.execute(
"SELECT nombre, edad, materia, estado FROM docentes WHERE LOWER (nombre) = ?",
(nombre.lower(),)
)
return cursor.fetchall()
def listar_docentes_con_id():
with sqlite3.connect(DB) as conn:
cursor = conn.cursor()
cursor.execute("SELECT id, nombre, edad, materia, estado FROM docentes")
return cursor.fetchall()
def editar_docente(id_docente, nombre, edad, materia, estado):
with sqlite3.connect(DB) as conn:
cursor = conn.cursor()
cursor.execute("""
UPDATE docentes
SET nombre = ?, edad = ?, materia = ?, estado = ?
WHERE id = ?
""", (id_docente, nombre, edad, materia, estado))
print("Filas afectadas:",cursor.rowcount)
conn.commit()
def listar_activos():
with sqlite3.connect(DB) as conn:
cursor = conn.cursor()
cursor.execute(
"SELECT nombre, edad, materia, estado FROM docentes WHERE estado = 'activo'"
)
return cursor.fetchall()
def eliminar_docente(id_docente):
with sqlite3.connect(DB) as conn:
cursor = conn.cursor()
cursor.execute(
"DELETE FROM docentes WHERE id = ?",
(id_docente,)
)
conn.commit()
def validar_nombre(nombre):
return bool(nombre.strip())
def validar_edad(edad):
return edad.isdigit() and 18 <= int(edad) <= 70
def validar_estado(estado):
return estado in ("Activo","Inactivo")
while True:
print("\n--- MENÚ DOCENTES (SQLite) ---")
print("1 - Agregar docentes")
print("2 - Listar docentes")
print("3 - Salir")
print("4 - Buscar docentes por nombre")
print("5 - Listar docentes activos")
print("6 - Editar docente")
print("7 - Eliminar docente")
opcion = input ("Opcion: ")
if opcion == "1":
nombre = input("Nombre: ").strip().lower()
edad = input("Edad: ").strip()
materia = input("Materia:").strip().lower()
estado = input("Estado (Activo/Inactivo): ").strip().lower()
if not validar_nombre(nombre):
print("Nombre no puede estar vacío")
continue
if not validar_edad(edad):
print("La edad es inválida, tienes que tener entre 18 a 70")
continue
if not validar_estado(estado):
print("El estado es invalido, debe ser Activo o Inactivo")
continue
agregar_docentes(nombre, int(edad), materia, estado)
print("Docente guardado en la base de datos")
elif opcion == "2":
docentes = listar_docentes()
if not docentes:
print("No hay docentes")
else:
for d in docentes:
print(d[0], "|", d[1], "|", d[2], "|", d[3])
elif opcion == "3":
print("Saliendo...")
elif opcion == "4":
nombre = input("Nombre a buscar: ").strip()
resultados = buscar_por_nombre(nombre)
if not resultados:
print("Docente no encontrado")
else:
for d in resultados:
print(d[0], "|", d[1], "|", d[2], "|", d[3])
elif opcion == "5":
activos = listar_activos()
if not activos:
print("No hay docentes activos")
else:
for d in activos:
print(d[0], "|", d[1], "|", d[2], "|", d[3])
elif opcion == "6":
docentes = listar_docentes_con_id()
if not docentes:
print("No hay docentes para editar")
else:
print("\n--- DOCENTES ---")
for d in docentes:
print(d[0], "-", d[1], "|", d[2], "|", d[3], "|", d[4])
id_docente = int(input("\nID del docente a editar: "))
nombre = input("nuevo nombre: ").strip().lower()
edad = int(input("Nueva edad: "))
materia = input("Nueva materia: ").strip().lower()
estado = input("Nuevo estado (activo/inactivo): ").strip().lower()
if not validar_nombre(nombre) or not validar_edad(str(edad)) or not validar_estado(estado):
print("Datos incorrectos")
continue
editar_docente(id_docente, nombre, edad, materia, estado)
print("Docente actualizado correctamente")
elif opcion == "7":
docentes = listar_docentes_con_id()
if not docentes:
print("No hay docentes para eliminar")
else:
print("\n--- DOCENTES ---")
for d in docentes:
print(d[0], "-", d[1], "|", d[2], "|", d[3], "|", d[4])
id_docente = int(input("\nID del docente a eliminar: "))
eliminar_docente(id_docente)
print("Docente eliminado correctamente")
else:
print("Opción inválida")