Skip to content

Commit ef24e16

Browse files
authored
Merge pull request #98 from macagua/2025_upgrades
2025 upgrades
2 parents c3883c0 + 1e5b86c commit ef24e16

File tree

3 files changed

+72
-55
lines changed

3 files changed

+72
-55
lines changed

recursos/leccion2/mysql/sistema/main.py

Lines changed: 63 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,4 @@
1-
"""
2-
Programa para realizar operaciones a base de datos MySQL
3-
"""
1+
"""Programa para realizar operaciones a base de datos MySQL"""
42

53
import logging
64
from settings import (
@@ -62,17 +60,17 @@ def crear_conexion(servidor, puerto, usuario, contrasena, bd):
6260
database=credenciales["database"],
6361
)
6462
logging.info(
65-
f"¡Conexión a la base de datos '{credenciales['database']}' fue exitosa!\n"
63+
f"¡Conexión a la base de datos '{credenciales['database']}' fue exitosa!\n"
6664
)
6765
except Error as err:
6866
if err.args[0] == DBACCESS_DENIED_ERROR:
6967
logging.error(
7068
"\x1b[1;31mERROR: ¡Algo está mal con su nombre de usuario o contraseña!"
7169
)
7270
elif err.args[0] == BAD_DB_ERROR:
73-
logging.error("\x1b[1;31mERROR: ¡La base de datos no existe!")
71+
logging.error("\x1b[1;31m❌ ERROR: ¡La base de datos no existe!")
7472
else:
75-
logging.error(f"\x1b[1;31mERROR: ¡Se produjo lo siguiente: '{err}'")
73+
logging.error(f"\x1b[1;31m❌ ERROR: Se produjo lo siguiente: '{err}'")
7674
return conexion_bd
7775

7876

@@ -88,13 +86,13 @@ def crear_base_datos(conexion_bd, create_database_sql, bd):
8886
# Crear un objeto cursor para ejecutar script SQL
8987
cursor = conexion_bd.cursor()
9088
try:
91-
# Insertar una base de datos en el servidor MySQL
89+
# Crear una base de datos en el servidor MySQL
9290
cursor.execute(create_database_sql, bd)
93-
logging.info(f"¡Creación exitosa de la base de datos '{bd}'!\n")
91+
logging.info(f"¡Creación exitosa de la base de datos '{bd}'!\n")
9492
except ProgrammingError as e:
95-
logging.error(f"ERROR: ¡Se produjo una falla de programación: '{e}'!")
93+
logging.error(f"ERROR: ¡Se produjo una falla de programación: '{e}'!")
9694
except OperationalError as e:
97-
logging.error(f"ERROR: Se produjo lo siguiente: '{e}'")
95+
logging.error(f"ERROR: Se produjo lo siguiente: '{e}'")
9896
return conexion_bd
9997

10098

@@ -110,19 +108,21 @@ def crear_tablas(conexion_bd, create_table_sql):
110108
cursor = conexion_bd.cursor()
111109
# Crear la tabla(s) si no existe
112110
cursor.execute(create_table_sql)
113-
# Confirmar la creación de la tabla
111+
# Hacer persistentes los cambios en la base de datos
114112
conexion_bd.commit()
115113
logging.info(
116-
f"¡Fueron creado(s) {cursor.rowcount} tabla(s) correctamente en la base de datos!\n"
114+
f"¡Fueron creado(s) {cursor.rowcount} tabla(s) correctamente en la base de datos!\n"
117115
)
118116
# Cerrar el cursor
119117
cursor.close()
120118
except Error as error:
121-
logging.error(f"¡Fallo la creación de tabla(s) en la base de datos!: {error}")
119+
logging.error(
120+
f"❌ ERROR: ¡Fallo la creación de tabla(s) en la base de datos!: {error}"
121+
)
122122

123123

124124
def insertar_registro(conexion_bd, insert_values, insert_sql):
125-
"""Inserción de registro de la tabla
125+
"""Función para la inserción de registro de la tabla
126126
127127
Args:
128128
conexion_bd (Connection): Representación conexión a la base de datos MySQL
@@ -132,34 +132,32 @@ def insertar_registro(conexion_bd, insert_values, insert_sql):
132132
try:
133133
# Crear un objeto cursor para ejecutar script SQL
134134
cursor = conexion_bd.cursor()
135-
# Confirmar la creación de la tabla
136-
conexion_bd.commit()
137135
# Insertar nuevos registros en la tabla
138136
cursor.executemany(insert_sql, insert_values)
139-
# Confirmar la inserción de los registros
140-
conexion_bd.commit()
141137
logging.info(
142-
f"¡Fueron insertado(s) {cursor.rowcount} registro(s) correctamente en la tabla!\n"
138+
f"¡Fueron insertado(s) {cursor.rowcount} registro(s) correctamente en la tabla!\n"
143139
)
144140
# Insertar un nuevo registro en la tabla
145141
cursor.execute(
146142
insert_sql, (4, "Liliana", "Andradez", "3105", "+58-414-6782473")
147143
)
148-
# Confirmar la inserción del registro
144+
# Hacer persistentes los cambios en la base de datos
149145
conexion_bd.commit()
150146
logging.info(
151-
f"¡Fueron insertado(s) {cursor.rowcount} registro(s) correctamente en la tabla!\n"
147+
f"¡Fueron insertado(s) {cursor.rowcount} registro(s) correctamente en la tabla!"
152148
)
153149
# Cerrar el cursor
154150
cursor.close()
155151
except IntegrityError as error:
156-
logging.error(f"¡Registro duplicado por clave primaria!: {error}")
152+
logging.error(f"❌ ERROR: ¡Registro duplicado por clave primaria!: {error}")
157153
except Error as error:
158-
logging.error(f"¡Fallo la inserción de registro(s) en la tabla!: {error}")
154+
logging.error(
155+
f"❌ ERROR: ¡Fallo la inserción de registro(s) en la tabla!: {error}"
156+
)
159157

160158

161159
def consultar_registro(conexion_bd, select_sql):
162-
"""Consulta de registro(s) de la tabla
160+
"""Función para la consulta de registro(s) de la tabla
163161
164162
Args:
165163
conexion_bd (Connection): Representación conexión a la base de datos MySQL
@@ -173,8 +171,8 @@ def consultar_registro(conexion_bd, select_sql):
173171
# Recuperar los registros de la consulta
174172
registros = cursor.fetchall()
175173
# Mostrar los registros de la tabla
176-
print(f"Total de filas son: {len(registros)} \n")
177-
print("Mostrar cada fila: \n")
174+
print(f"\n📜 Total de filas son: {len(registros)} \n")
175+
print("📜 Mostrar cada fila: \n")
178176
for fila in registros:
179177
print(f"\tId: {fila[0]}")
180178
print(f"\tNombre: {fila[1]} {fila[2]}")
@@ -183,35 +181,39 @@ def consultar_registro(conexion_bd, select_sql):
183181
# Cerrar el cursor
184182
cursor.close()
185183
except Error as error:
186-
logging.error(f"¡Fallo la consulta de registro(s) en la tabla!: {error}")
184+
logging.error(
185+
f"❌ ERROR: ¡Fallo la consulta de registro(s) en la tabla!: {error}"
186+
)
187187

188188

189189
def actualizar_registro(conexion_bd, update_values, update_sql):
190-
"""Actualización de registro de la tabla
190+
"""Función para la actualización de registro de la tabla
191191
192192
Args:
193193
conexion_bd (Connection): Representación conexión a la base de datos MySQL
194194
update_values (list): Lista de filas a actualizar
195-
update_sql (str): _description_
195+
update_sql (str): Script UPDATE SQL a usar al actualizar datos
196196
"""
197197
try:
198198
# Crear un objeto cursor para ejecutar script SQL
199199
cursor = conexion_bd.cursor()
200200
# Actualizar nuevos registros en la tabla
201201
cursor.executemany(update_sql, update_values)
202-
# Guardar los cambios en la base de datos
202+
# Hacer persistentes los cambios en la base de datos
203203
conexion_bd.commit()
204204
logging.info(
205-
f"¡Fueron actualizado(s) {cursor.rowcount} registro(s) correctamente en la tabla!\n"
205+
f"¡Fueron actualizado(s) {cursor.rowcount} registro(s) correctamente en la tabla!\n"
206206
)
207207
# Cerrar el cursor
208208
cursor.close()
209209
except Error as error:
210-
logging.error(f"¡Fallo la actualización de registro(s) en la tabla!: {error}")
210+
logging.error(
211+
f"❌ ERROR: ¡Fallo la actualización de registro(s) en la tabla!: {error}"
212+
)
211213

212214

213215
def eliminar_registro(conexion_bd, delete_sql):
214-
"""Eliminación de registro de la tabla
216+
"""Función para la eliminación de registro de la tabla
215217
216218
Args:
217219
conexion_bd (Connection): Representación conexión a la base de datos MySQL
@@ -222,23 +224,38 @@ def eliminar_registro(conexion_bd, delete_sql):
222224
cursor = conexion_bd.cursor()
223225
# Eliminar un fila de registro simple
224226
cursor.execute(delete_sql)
225-
# Guardar los cambios en la base de datos
227+
# Hacer persistentes los cambios en la base de datos
226228
conexion_bd.commit()
227-
logging.info("¡Registro eliminado correctamente!\n")
229+
logging.info("¡Registro eliminado correctamente!\n")
228230
# Cerrar el cursor
229231
cursor.close()
230232
except Error as error:
231-
logging.error(f"¡Fallo la eliminación de registro(s) en la tabla!: {error}")
233+
logging.error(
234+
f"❌ ERROR: ¡Fallo la eliminación de registro(s) en la tabla!: {error}"
235+
)
232236

233237

234238
if __name__ == "__main__":
235-
# Crear conexión con un servidor MySQL
236-
conexion = crear_conexion(HOST, PORT, USER, PASSW, DB)
237-
# Crear la base de datos
238-
# crear_base_datos(conexion, CREATE_DATABASE_SQL, DB)
239-
# Crear la tabla dentro de la base de datos
240-
crear_tablas(conexion, CREATE_TABLE_SQL)
241-
insertar_registro(conexion, INSERT_MULTIPLE_COLUMNS, INSERT_SQL_SCRIPTS)
242-
consultar_registro(conexion, SELECT_SQL_SCRIPTS)
243-
actualizar_registro(conexion, UPDATE_MULTIPLE_COLUMNS, UPDATE_SQL_SCRIPTS)
244-
eliminar_registro(conexion, DELETE_SQL_SCRIPTS)
239+
conexion = None
240+
try:
241+
# Crear conexión al servidor MySQL
242+
conexion = crear_conexion(HOST, PORT, USER, PASSW, DB)
243+
# Crear la base de datos
244+
# crear_base_datos(conexion, CREATE_DATABASE_SQL, DB)
245+
# Crear la tabla dentro de la base de datos
246+
crear_tablas(conexion, CREATE_TABLE_SQL)
247+
insertar_registro(conexion, INSERT_MULTIPLE_COLUMNS, INSERT_SQL_SCRIPTS)
248+
consultar_registro(conexion, SELECT_SQL_SCRIPTS)
249+
actualizar_registro(conexion, UPDATE_MULTIPLE_COLUMNS, UPDATE_SQL_SCRIPTS)
250+
eliminar_registro(conexion, DELETE_SQL_SCRIPTS)
251+
except Error as e:
252+
logging.error(
253+
f"❌ ERROR: ¡Se produjo un falla al establecer la conexión a la base de datos '{DB}': '{e}'!"
254+
)
255+
finally:
256+
if conexion:
257+
# Cerrar la conexión a la base de datos
258+
conexion.close()
259+
logging.info(
260+
f"✅ ¡La conexión PostgreSQL a la base de datos '{DB}' fue cerrada!"
261+
)

recursos/leccion2/postgresql/sistema/main.py

Lines changed: 8 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -16,8 +16,8 @@
1616
UPDATE_SQL_SCRIPTS,
1717
DELETE_SQL_SCRIPTS,
1818
)
19-
from psycopg2.errors import Error, DatabaseError, OperationalError, ProgrammingError
2019
from psycopg2 import connect
20+
from psycopg2.errors import Error, DatabaseError, OperationalError, ProgrammingError
2121

2222
logging.basicConfig(level=logging.INFO)
2323

@@ -119,7 +119,7 @@ def insertar_registro(conexion_bd, insert_values, insert_sql):
119119
"""Función para la inserción de registro de la tabla
120120
121121
Args:
122-
conexion_bd (Connection): Representación conexión a la base de datos SQLite
122+
conexion_bd (Connection): Representación conexión a la base de datos PostgreSQL
123123
insert_values (list): Lista de filas a ingresar
124124
insert_sql (str): Script INSERT SQL a usar al ingresar datos
125125
"""
@@ -133,7 +133,7 @@ def insertar_registro(conexion_bd, insert_values, insert_sql):
133133
)
134134
# Insertar un nuevo registro en la tabla
135135
cursor.execute(
136-
INSERT_SQL_SCRIPTS, (4, "Liliana", "Andradez", "3105", "+58-414-6782473")
136+
insert_sql, (4, "Liliana", "Andradez", "3105", "+58-414-6782473")
137137
)
138138
# Hacer persistentes los cambios en la base de datos
139139
conexion_bd.commit()
@@ -152,7 +152,7 @@ def consultar_registro(conexion_bd, select_sql):
152152
"""Función para la consulta de registro(s) de la tabla
153153
154154
Args:
155-
conexion_bd (Connection): Representación conexión a la base de datos SQLite
155+
conexion_bd (Connection): Representación conexión a la base de datos PostgreSQL
156156
select_sql (str): Script SELECT SQL a usar al consultar datos
157157
"""
158158
try:
@@ -182,7 +182,7 @@ def actualizar_registro(conexion_bd, update_values, update_sql):
182182
"""Función para la actualización de registro de la tabla
183183
184184
Args:
185-
conexion_bd (Connection): Representación conexión a la base de datos SQLite
185+
conexion_bd (Connection): Representación conexión a la base de datos PostgreSQL
186186
update_values (list): Lista de filas a actualizar
187187
update_sql (str): Script UPDATE SQL a usar al actualizar datos
188188
"""
@@ -208,7 +208,7 @@ def eliminar_registro(conexion_bd, delete_sql):
208208
"""Función para la eliminación de registro de la tabla
209209
210210
Args:
211-
conexion_bd (Connection): Representación conexión a la base de datos SQLite
211+
conexion_bd (Connection): Representación conexión a la base de datos PostgreSQL
212212
delete_sql (str): Script DELETE SQL a usar al eliminar datos
213213
"""
214214
try:
@@ -240,12 +240,12 @@ def eliminar_registro(conexion_bd, delete_sql):
240240
eliminar_registro(conexion, DELETE_SQL_SCRIPTS)
241241
except Error as e:
242242
logging.error(
243-
f"❌ ERROR: ¡Se produjo un falla al establecer la conexión a la base de datos '{DB_FILE}': '{e}'!"
243+
f"❌ ERROR: ¡Se produjo un falla al establecer la conexión a la base de datos '{DB}': '{e}'!"
244244
)
245245
finally:
246246
if conexion:
247247
# Cerrar la conexión a la base de datos
248248
conexion.close()
249249
logging.info(
250-
f"✅ ¡La conexión SQLite a la base de datos '{DB_FILE}' fue cerrada!"
250+
f"✅ ¡La conexión PostgreSQL a la base de datos '{DB}' fue cerrada!"
251251
)

source/leccion2/mysql.rst

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -559,7 +559,7 @@ Módulo principal del programa.
559559
.. literalinclude:: ../../recursos/leccion2/mysql/sistema/main.py
560560
:language: python
561561
:linenos:
562-
:lines: 1-244
562+
:lines: 1-261
563563

564564
*Archivo* :file:`docker-compose.yml`
565565

0 commit comments

Comments
 (0)