Borra Dor
Borra Dor
Borra Dor
2022
Tabla de contenido
Introducción........................................................................................................................................3
Objetivos.............................................................................................................................................4
Objetivo general..............................................................................................................................4
Objetivos específicos......................................................................................................................4
Planteamiento del problema...............................................................................................................5
Estado de Arte de lo que es un Proceso Transaccional......................................................................6
Desarrollo del Proyecto......................................................................................................................7
Enlace del Video YouTube...............................................................................................................17
Conclusiones.....................................................................................................................................18
Referencias bibliográficas................................................................................................................19
Introducción
información que recopila, almacena, modifica y recupera toda la información generada por las
transacciones que ocurren en una organización. Una transacción es un evento que genera o
modifica los datos que eventualmente se almacenan en un sistema de información. Para que un
Cuando se realiza una compra a través de un servicio online, se transfiere o retira dinero
en un cajero automático, se desencadenan una serie de operaciones con el fin de garantizar que
dicha transacción sea exitosa. Sin embargo, si una operación individual de la serie falla durante
el intercambio, la falla afecta a todo el intercambio. Esto trae como consecuencia que no se
relacionadas en una unidad que se completa con éxito o falla, puede simplificar la recuperación
de errores y brindar una mayor confiabilidad para su aplicación. Astros, I. J. T. (2017, julio 13).
Objetivos
Objetivo general
Acceder a la base de datos usando sockets para hacer las operaciones transaccionales.
Objetivos específicos
Elaborar el socket Sever que reciba peticiones del socket Cliente y resuelva dichas
Elaborar un programa Socket Cliente que use la ip del Socket Servidor y el puerto del
b. Update --- > Para actualizar los datos de un empleado en la base de datos
d. Delete --- > Borrar un empleado de la base de datos, previa inserción de la tabla
Históricos.
.
Estado de Arte de lo que es un Proceso Transaccional
capítulo 1 y 3 se menciona: Una transacción es una unidad de trabajo lógica que comprende
por lo regular varias operaciones de la Base de Datos. También indicamos que el usuario debe
ser capaz de informar al sistema cuando haya operaciones distintas que forman parte de la
misma transacción. Para este fin, se proporcionan las operaciones BEGIN TRANSACTION,
3. Se garantiza además que las transacciones estén aisladas entre sí; en el sentido de
que las actualizaciones hechas a la base de datos por una determinada transacción
T1 no sean visibles para ninguna transacción distinta T2, por lo menos, hasta que
T1 ejecute con éxito el COMMIT. Pues ésta permite que las actualizaciones
efectuadas por una transacción sean visibles para otras transacciones; se dice que
procesamiento controlado.
el concepto de transacciones se puede extender a casi cualquier dominio, como los recursos
La especificación del socket del cliente y el socket del servidor se realiza mediante la
cuadro de la variable Ruta, y luego la base de datos se crea con postgres, por lo que debe usar
pip install desde el comando de consola Psycopg2 instala el paquete psycopg2, que permite a
Ahora el socket del cliente se encargará de enviar la información al socket del servidor
para que el socket del servidor pueda procesar esta información así, enviarla o solicitarla a la
base de datos para su posterior procesamiento o guardarla y enviarle al cliente una solicitud
Pull nuevamente.
Socket Cliente:
from socket import *
import sys
IPServidor = "localhost"
puertoServidor = 9099
while True:
#Mensaje
mensaje = input()
if mensaje != "5":
socket_cliente.send(mensaje.encode())
respuesta = socket_cliente.recv(4096).decode()
print(respuesta)
else:
socket_cliente.send(mensaje.encode())
#cerrar socket
socket_cliente.close()
sys.exit
Socket Servidor:
direccionServidor = "localhost"
puertoServidor = 9099
#Conexión
server_socket.bind((direccionServidor, puertoServidor))
server_socket.listen()
def salir():
print('Conexión cerrada para: ',addr)
conexion.close()
def ciclo():
conexion.send(""" hola, elige alguna opción para continuar(palabra)
1. consultar
2. insertar
3. actualizar
4. eliminar
5. salir
""".encode())
recibe= conexion.recv(4006).decode()
print(recibe)
if recibe== "5":
return salir()
elif recibe== "1":
conexion.send("esta seguro que desea consultar un empleado?".encode())
usuario= conexion.recv(4006).decode()
while usuario == "no":
return ciclo()
else:
conexion.send("ingrese el id del usuario a consultar".encode())
datos= conexion.recv(4006).decode()
conexion1 =
psycopg2.connect(database=database_elephant,user=user_elephant,host=host_elephant,password
=password_elephant)
cursor1 = conexion1.cursor()
cursor1.execute("SELECT * FROM recursos_humanos.empleados where empl_id= ( %s);",
(datos))
#Insertar datos
elif recibe== "2":
conexion.send("esta seguro que desea añadir un empleado?".encode())
usuario= conexion.recv(4006).decode()
conexion2 =
psycopg2.connect(database=database_elephant,user=user_elephant,host=host_elephant,password
=password_elephant)
cursor2 = conexion2.cursor()
sql = "INSERT INTO
recursos_humanos.empleados(empl_id,empl_primer_nombre,empl_segundo_nombre,empl_emai
l,empl_fecha_nac,empl_sueldo,empl_comision,empl_cargo_id,empl_gerente_id,empl_dpto_id)
values (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s);"
while usuario == "no":
break
else:
#Ingreso de los datos
conexion.send("ingrese el id del empleado".encode())
empl_id= conexion.recv(4006).decode()
conexion.send("ingrese el primer nombre".encode())
empl_primer_nombre= conexion.recv(4006).decode()
conexion.send("ingrese el segundo nombre".encode())
empl_segundo_nombre= conexion.recv(4006).decode()
conexion.send("ingrese la dirección de correo".encode())
empl_email= conexion.recv(4006).decode()
conexion.send("ingrese la fecha de nacimiento".encode())
empl_fecha_nac= conexion.recv(4006).decode()
conexion.send("ingrese el sueldo".encode())
empl_sueldo= conexion.recv(4006).decode()
conexion.send("ingrese la comision".encode())
empl_comision= conexion.recv(4006).decode()
conexion.send("ingrese el id del cargo".encode())
empl_cargo_id= conexion.recv(4006).decode()
conexion.send("ingrese el id del gerente".encode())
empl_gerente_id= conexion.recv(4006).decode()
conexion.send("ingrese el id del departamento".encode())
empl_dpto_id= conexion.recv(4006).decode()
conexion2.commit()
conexion2.close()
return ciclo()
#Actualizar datos
elif recibe== '3':
conexion.send("esta seguro que desea actualizar un empleado?".encode())
usuario= conexion.recv(4006).decode()
conexion3 =
psycopg2.connect(database=database_elephant,user=user_elephant,host=host_elephant,password
=password_elephant)
cursor3 = conexion3.cursor()
sql = "UPDATE recursos_humanos.empleados SET empl_sueldo=%s WHERE empl_id=
%s;"
while usuario == "no":
break
else:
#Ingreso de datos
conexion.send("ingrese el id del empleado".encode())
empl_id= conexion.recv(4006).decode()
conexion.send("ingrese el nuevo sueldo".encode())
empl_sueldo= conexion.recv(4006).decode()
#envio de datos a postgress
datos = (empl_sueldo,empl_id)
cursor3.execute(sql,datos)
conexion.send("desea actualizar otro empleado?".encode())
usuario = conexion.recv(4006).decode()
conexion3.commit()
conexion3.close()
return ciclo()
#Eliminar datos
elif recibe== '4':
conexion.send("esta seguro que desea eliminar un empleado?".encode())
usuario= conexion.recv(4006).decode()
conexion4 =
psycopg2.connect(database=database_elephant,user=user_elephant,host=host_elephant,password
=password_elephant)
cursor4 = conexion4.cursor()
sql = "DELETE FROM recursos_humanos.empleados WHERE empl_id=%s;"
while usuario == "no":
break
else:
conexion.send("ingrese el id del empleado".encode())
empl_id= conexion.recv(4006).decode()
datos = (empl_id)
cursor4.execute(sql,datos)
conexion.send("desea actualizar otro empleado?".encode())
usuario = conexion.recv(4006).decode()
conexion4.commit()
conexion4.close()
return ciclo()
while True:
conexion, addr= server_socket.accept()
print('nueva conexion establecida')
while True:
inicio=conexion.recv(4006).decode()
ciclo()
Algunos conceptos generales de la programación de sockets con Python (que pudimos ver en el
código) son:
● LISTEN: se usa para indicarle al complemento que esté en modo de escucha para esperar
● ACCEPT: Al aceptar una conexión entrante de un cliente conectado, busca una conexión
del cliente con los dos parámetros recibidos (los mismos parámetros utilizados para crear el
socket).
● ENCODE: codificar los datos recibidos y devuelve el objeto en bytes (no forma parte de
● DECODE: recibe el objeto recibido y devuelve la cadena (no forma parte de la interfaz
del socket).
Resultados:
Luego de ejecutar el código observamos las siguientes evidencias de actividad del programa,
Consulta de información: Se realiza la consulta del primer empleado, para ello se especifica el id
del mismo:
Ilustración 4 Consulta del Primer Empleado
empleados:
ingresado:
Eliminación de información: Se realiza el borrado del registro del primer cliente y consulta en la
En este ejemplo vemos que cambiando el atributo a on delete cascade, es decir, borrado en
cascada o secuencial, el programa borra todos los registros que hay en él. De la misma manera,
podemos ver si pasa por el proceso de eliminación de datos. Este procedimiento podría haber
funcionado mejor si se hubiera realizado en una tabla sin claves foráneas, pero sigue siendo el
Esa información nos va a servir para la conexión de la base de datos al software, pues aquí
Código: https://drive.google.com/drive/folders/1NxiIPJm190e5wGuMtYMM-2EtHunMISno?
usp=share_link
Enlace del Video YouTube
del proceso transaccional, el desarrollo del código fuente de los programas Socket Server y
Socket cliente, junto con la explicación de lo que hace en cada programa y todos los
requerimientos para el taller; finalmente en esta sección se adjunta el enlace del video
realizado.
https://youtu.be/DfAhDpO0514
Es un conjunto de hechos que deben realizarse como una unidad indivisible de trabajo, en
la que todos y cada uno de ellos triunfan o todos y cada uno de ellos son rechazados. Como esta
negocios y eventos financieros que involucran transferencias de dinero. Este solo hecho significa
Así pues, ACID compliant define a un sistema de gestión de bases de datos que puede
Monografias.com. https://www.monografias.com/docs114/sistema-informacion-
transaccional-teoria-y-aplicacion/sistema-informacion-transaccional-teoria-y-aplicacion
PayRetailers. https://payretailers.com/es/latam/sistema-procesamiento-transacciones
https://prezi.com/kjd_v-zz13wa/que-es-un-sistema-transaccional/