-
Notifications
You must be signed in to change notification settings - Fork 47
Ejecutar Procedimiento Almacenado
Los procedimientos almacenados son pequeños programas que podemos ejecutar directamente en los sistemas de bases de datos. En este ejemplo veremos como ejecutar nuestros procedimientos almacenados en PostgreSQL.
El procedimiento almacenado que vamos a ejecutar es el siguiente:
CREATE OR REPLACE FUNCTION fib (
numero integer
) RETURNS integer AS $$
BEGIN
IF numero < 2 THEN
RETURN numero;
END IF;
RETURN fib(numero - 2) + fib(numero - 1);
END;
$$ language plpgsql
El procedimiento también está disponible en este link
El primer paso es guardar el proceso anterior en un archivo fibonacci.sql
. Una vez que lo tenemos guardado en nuestro computador, abrimos la consola en el directorio donde se encuentra el archivo. (Si el archivo está en el escritorio, abres la consola desde el escritorio)
Tenemos que entrar en la consola de postgreSQL mediante el comando
psql [nombre base de datos]
Si seguiste el tutorial PostgreSQL y psycopg2, entonces deberías tener la base de datos ExampleDB
creada, de todas formas puedes crear otra base de datos con el comando
createdb [nombre base de datos]
Una vez que estemos dentro, ejecutamos el siguiente comando en la consola de postgres:
\i fibonacci.sql
Si todo salió bien, postgres nos mostrará el mensaje CREATE FUNCTION
.
Ahora podemos utilizar la función con el siguiente comando:
SELECT fib(7);
Este comando nos entregará el 7mo número en la sucesión de fibonacci.
Primero que nada cargamos la librería ipython-sql corriendo lo siguiente en una celda de código
%load_ext ipython-sql
Luego establecemos la conexión con la base de datos mediante el siguiente comando, tambien en una celda de código:
%%sql
postgresql://<usuario_de_postgres>:<pass_de_postgres>@localhost/<nombre_db>
Donde debes cambiar con tus datos correspondientes en las secciones marcadas con <>
Una vez que ejecutamos esta celda, podemos definir nuestro procedimiento almacenado directamente en otra celda de código del Jupyter Notebook:
%%sql
CREATE OR REPLACE FUNCTION fib (
numero integer
) RETURNS integer AS $$
BEGIN
IF numero < 2 THEN
RETURN numero;
END IF;
RETURN fib(numero - 2) + fib(numero - 1);
END;
$$ language plpgsql
Una vez que ejecutamos esta celda, podemos ejecutar la funcion mediante lo sigiuente (al igual que siempre, en una celda de código).
%%sql
SELECT fib(7);
Para el desarrollo del proyecto les designamos un servidor que ya tiene Postgres instalado, por lo que pueden correr los procedimientos ahí.
Pueden ver una guía de como realizar esto aquí