Python - API DB
Python - API DB
• Ahora connection es nuestro objeto que tiene una conexión activa y abierta
con la base de datos.
• Si usamos el método .cursor(), obtendremos un objeto para ejecutar acciones:
• Por ejemplo, para hacer una consulta, usando el objeto obtenido llamamos a .execute() y
entre paréntesis escribimos un String con la sentencia select.
cursor
cursor == connection.cursor()
connection.cursor()
cursor.execute("SELECT
cursor.execute("SELECT ** FROM
FROM clientes")
clientes")
for
for cliente
cliente in
in filas:
filas:
print(cliente)
print(cliente)
• fetchall() nos devuelve una lista de datos. Esa lista la podemos recorrer en un
ciclo for() para obtener sus resultados.
OBTENER Y RECORRER RESULTADOS
sql
sql == '''UPDATE
'''UPDATE persona
persona SET
SETnombre
nombre == :nom,
:nom, apellido
apellido == :ape,
:ape, edad
edad == :edad
:edad
WHERE id = :id'''
WHERE id = :id'''
sentencia.execute(sql,
sentencia.execute(sql, nom=nombre,
nom=nombre, ape=apellido,
ape=apellido, edad=edad,
edad=edad, id=opcion)
id=opcion)
• Quizás te preguntes qué son esos valores al lado de los “:”, como los
números y nombres.
• Es importante saber cómo entregar los valores a la sentencia String SQL que
hayamos hecho. Debe hacerse a través de parámetros.
PARÁMETROS DENTRO DE UN SQL
• Por un tema de seguridad, NUNCA debes hacer una sentencia SQL
concatenando sus valores con una variable. Un ejemplo de esto sería:
sentencia.execute("UPDATE
sentencia.execute("UPDATE persona
persona SET
SET nombre
nombre == '"'" ++ nombre
nombre ++ "'")
"'")
• En esta sentencia, se están asignando los parámetros :nom, :ape, :edad y :id.
• Para darles un valor real a estos parámetros, dentro del método execute, justo
después del primer parámetro (que es el SQL), empezaremos a separar por comas e
indicar el valor que asumirán.
• nom = nombre; está indicando que :nom asumirá el valor de la variable nombre.
También podríamos decir algo como-> nom=“Pedro”, ape=“Pérez”.
• Esto formará una sentencia final que reemplazará los :algo con valores reales.
PARAMETRIZACIÓN NUMERIC
• De una forma similar funcionan los parámetros numeric, solo que estos
responderán al orden en que entregamos los valores.
sentencia.execute("INSERT
sentencia.execute("INSERTINTOINTO persona
persona (nombre,
(nombre, apellido,
apellido, edad)
edad) VALUES
VALUES (:1,
(:1, :2,
:2, :3)",
:3)",
(nombre, apellido, edad))
(nombre, apellido, edad))
• Como las bases de datos de Oracle son 100% transaccionales (es decir, que
no terminan de confirmar un cambio a menos que tú se lo digas usando la
sentencia commit de SQL), tus cambios no estarán confirmados hasta que
llames al método commit().
• Este método lo que hace es ejecutar una sentencia SQL commit.
EJERCICIO 1
• Crea una tabla en Oracle que tenga tipos de datos numéricos y de texto.
• Crea un nuevo proyecto en PyCharm y crea un archivo que logre que
conectarse a la Base de Datos
• Una vez lista la conexión, prueba a obtener todos los resultados de una tabla.
• Luego, intenta hacer un select con where, y aquí utiliza la parametrización.
• Prueba a insertar un registro y también borrarlo.
• Finalmente, prueba a actualizar un registro con una condición where.
EJERCICIO 2
• Crea un nuevo proyecto en PyCharm.
• Esta vez, crea una clase específica para acceder a la conexión con Oracle
• Crea un archivo distinto para tener un menú con el que el usuario pueda
interactuar con ciertas acciones hacia la base de datos.
• Crea modelos de clases para ir dejando en dichos modelos, los métodos
correspondientes a cada tabla. Por ejemplo, si tienes una clase Alumno, que
ahí estén los métodos para leer, insertar, actualizar y borrar registros de la
tabla alumno.