0% encontró este documento útil (0 votos)
10 vistas12 páginas

Postgres Informe

Cargado por

limber mamani
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
10 vistas12 páginas

Postgres Informe

Cargado por

limber mamani
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 12

Universidad Mayor de San Andres

Facultad de Ciencias Puras y Naturales


Carrera de Informática

Exposicion: POSTGRESQL

Docente: Lic. Celia Elena Tarquino Peralta


Integrantes:
● Limbert Mamani Quiñajo

La Paz - Bolivia
2024
Cursores
1: Este cursor recorrerá los recursos (RECURSOS) asociados a un administrador específico y mostrará los
nombres de los recursos junto con el nombre del administrador.
DO $$ JOIN

DECLARE Administrador A

rec RECORD; ON

admin_id INTEGER := 1; -- Cambia este valor al R.codAd = A.codAd


`codAd` deseado
WHERE
BEGIN
A.codAd = admin_id
-- Cursor para recorrer los recursos asignados a un
administrador específico LOOP

FOR rec IN -- Imprimir los datos del recurso y administrador

SELECT RAISE NOTICE 'Recurso: %, Cantidad: %,


Administrador: % %',
R.nombre_recurso,
rec.nombre_recurso,
R.cantidad,
rec.cantidad,
A.nombre AS administrador_nombre,
rec.administrador_nombre,
A.paterno AS administrador_apellido
rec.administrador_apellido;
FROM
END LOOP;
Recursos R
END $$;
2: Este cursor recorre todos los recursos de la tabla Recursos y, si la cantidad de un recurso es menor a 10,
la aumenta en 5.

DO $$ UPDATE Recursos
DECLARE SET cantidad = cantidad + 5
cur_resources CURSOR FOR WHERE id = rec.id;
SELECT id, cantidad
FROM Recursos; RAISE NOTICE 'Recurso % actualizado,
nueva cantidad: %',
rec RECORD;
rec.id, rec.cantidad + 5;
BEGIN
ELSE
-- Abrir el cursor
RAISE NOTICE 'Recurso % no necesita
OPEN cur_resources; actualización, cantidad actual: %',
rec.id, rec.cantidad;
-- Recorrer los registros del cursor END IF;
LOOP END LOOP;
FETCH cur_resources INTO rec;
EXIT WHEN NOT FOUND; -- Cerrar el cursor
CLOSE cur_resources;
-- Verificar y actualizar la cantidad si es menor
a 10
END $$;
IF rec.cantidad < 10 THEN
VISTAS

1: Vista de Información Detallada de Beneficiarios del Programa de Apoyo Escolar con Datos de
Trabajadores Sociales y Duración del Programa Educativo

CREATE OR REPLACE VIEW FROM


vista_paciente_prog_educativo AS
beneficiario b
SELECT DISTINCT
JOIN paciente pa ON b.codven = b.codven
pr.nombre_programa,
JOIN trabajadorsocial ts ON b.codTrabSoc =
b.nombre || ' ' || b.paterno || ' ' || b.materno AS ts.codTrabSoc
nombre_beneficiario,
JOIN personal pe ON pe.codpersonal = ts.codpersonal
FLOOR(EXTRACT(YEAR FROM AGE(b.fecha_nac))) AS
edad, -- Edad calculada con AGE JOIN programaeducativo pr ON
pr.nombre_programa LIKE 'Programa de Apoyo Escolar'
b.direccion AS direccion_paciente,
WHERE
pe.nombre || ' ' || pe.paterno || ' ' || pe.materno AS
trabajador_social, b.fecha_nac BETWEEN '2010-01-01' AND '2015-12-
31'
ts.correo AS correo_trabajador_social,
-- Consulta para ver los re
pr.descripcion AS descripcion_programa,
sultados de la vista
pr.duracion

SELECT * FROM vista_paciente_prog_educativo;


Procedimientos almacenados

1: Procedimiento para Insertar un Nuevo Administrador en la Base de Datos y Visualizar los Registros de la
Tabla Administrador

CREATE OR REPLACE PROCEDURE codAd, nombre, paterno, materno, fechaNac,


insertar_administrador ( telefono
p_codAd INTEGER, )
p_nombre VARCHAR, VALUES (
p_paterno VARCHAR, p_codAd, p_nombre, p_paterno, p_materno,
p_fechaNac, p_telefono
p_materno VARCHAR,
);
p_fechaNac DATE,
COMMIT;
p_telefono INTEGER
END;
)
$$;
LANGUAGE plpgsql
AS
CALL insertar_administrador(6,
$$ 'Juan','Pérez','Gómez','1985-05-15', 12345678)
BEGIN
-- Insertar datos en la tabla Administrador select * from administrador
INSERT INTO Administrador (
Verificamos:
Funciones almacenadas

1: Función para Insertar un Nuevo Recurso en la Tabla y Retornar su Código Generado


CREATE OR REPLACE FUNCTION insertar_recurso( -- Insertar el recurso en la tabla y recuperar el
código generado
p_nombre IN VARCHAR,
INSERT INTO recursosss (nombre, cantidad,
p_cantidad IN INTEGER,
precio)
p_precio IN DECIMAL VALUES (p_nombre, p_cantidad, p_precio)
) RETURNING codRecurso INTO v_codRecurso;
RETURNS INTEGER
LANGUAGE plpgsql -- Retornar el código del nuevo recurso
AS RETURN v_codRecurso;
$$ END;
DECLARE $$;
v_codRecurso INTEGER;
BEGIN SELECT insertar_recurso('Teclado', 15, 50.75);
Trigers

1: Creación de Función para Insertar Administradores y Ejecución de Inserciones en la Tabla Administrador


mediante un Bloque Anónimo

CREATE TABLE LogRecursos ( $$

idLog SERIAL PRIMARY KEY, BEGIN

codRec INT, INSERT INTO administrador (codAd, nombre,


paterno, materno, fechaNac, telefono)
nombre_recurso VARCHAR(50),
VALUES (p_codAd, p_nombre, p_paterno,
cantidad INT,
p_materno, p_fechaNac, p_telefono);
descripcion VARCHAR(50),
END;
fecha TIMESTAMP DEFAULT
$$ LANGUAGE plpgsql;
CURRENT_TIMESTAMP,

tipo_cambio VARCHAR(10) -- 'INSERT' o


'UPDATE' DO $$

); BEGIN

CREATE OR REPLACE FUNCTION -- Llamadas a la función de inserción


insertardministrador(
PERFORM insertarAdministrador(8, 'Juan',
p_codAd INTEGER, 'Pérez', 'Gonzales', '1980-05-15'::DATE,
77724870);
p_nombre VARCHAR,
PERFORM insertarAdministrador(9, 'María',
p_paterno VARCHAR,
'Lopez', 'Martinez', '1995-08-25'::DATE,
p_materno VARCHAR, 77654321);

p_fechaNac DATE, -- Y así sucesivamente...

p_telefono INTEGER END;

) $$;

RETURNS VOID AS select * from Administrador


Crud

from flask import Flask, render_template, request, redirect, url_for


import psycopg2
from datetime import datetime

app = Flask(__name__)
app.config['DEBUG'] = True # Activar el modo de depuración

# Detalles de la conexión a la base de datos


host = "localhost"
database = "proyecto" # Nombre de la base de datos
user = "postgres"
port = 5432# Usuario por defecto es postgres
password = "123456" # Contraseña asignada al momento de la instalación
de PostgreSQL

# Conexión a la base de datos


def get_db_connection():
try:
connection = psycopg2.connect(
host=host,
database=database,
user=user,
password=password
)
return connection
except Exception as e:
print(f"Error al conectar a la base de datos: {e}")
return None

# Ruta principal (Select)


@app.route('/')
def index():
connection = get_db_connection()
cursor = connection.cursor()
cursor.execute('SELECT * FROM administrador')
administrador = cursor.fetchall()
cursor.close()
connection.close()
return render_template('index.html', administrador=administrador)

# Ruta para agregar (Insert)


@app.route('/add', methods=('GET', 'POST'))
def add_administrador():
if request.method == 'POST':
nombre_recurso = request.form['nombre_recurso']
cantidad = int(request.form['cantidad']) # Aseguramos que sea un entero
descripcion = request.form['descripcion'] # Descripción puede ser texto
codad = request.form['codad']
connection = get_db_connection()
cursor = connection.cursor()
cursor.execute(
'INSERT INTO administrador (nombre_recurso, cantidad, descripcion,
codad) VALUES (%s, %s, %s, %s)',
(nombre_recurso, cantidad, descripcion, codad)
)
connection.commit()
cursor.close()
connection.close()
return redirect(url_for('index'))
return render_template('add_administrador.html')

# Ruta para Modificar (Update)


@app.route('/update/<int:codrec>', methods=('GET', 'POST'))
def update_administrador(codrec):
connection = get_db_connection()
cursor = connection.cursor()
cursor.execute('SELECT * FROM administrador WHERE codrec = %s', (codrec,))
recurso = cursor.fetchone()

if request.method == 'POST':
nombre_recurso = request.form['nombre_recurso']
cantidad = int(request.form['cantidad']) # Aseguramos que sea un entero
descripcion = request.form['descripcion']
codad = request.form['codad']

cursor.execute(
'UPDATE administrador SET nombre_recurso = %s, cantidad = %s,
descripcion = %s, codad = %s WHERE codrec = %s',
(nombre_recurso, cantidad, descripcion, codad, codrec)
)
connection.commit()
cursor.close()
connection.close()
return redirect(url_for('index'))

cursor.close()
connection.close()
return render_template('update_administrador.html', recurso=recurso)

# Ruta para eliminar (Delete)


@app.route('/delete/<int:codrec>', methods=('POST',))
def delete_administrador(codrec):
connection = get_db_connection()
cursor = connection.cursor()
cursor.execute('DELETE FROM administrador WHERE codrec = %s', (codrec,))
connection.commit()
cursor.close()
connection.close()
return redirect(url_for('index'))

if __name__ == "__main__":
app.run(debug=True)

connection = psycopg2.connect(
host=host,
database=database,
user=user,
password=password,
port=5432 # Si estás usando el puerto por defecto, ajústalo si es diferente
)

También podría gustarte