Logo Studenta

Copia de Introducción a Bases de Datos y Python con Sqlite

¡Este material tiene más páginas!

Vista previa del material en texto

Introducción a Bases de Datos 
y Python - Sqlite
Presenta: Esteban Acevedo
AFTERCLASS
● Entender la estructura de una base de 
datos relacional.
● Conectar a Python con una base de 
datos, y guardar datos y consultarlos.
OBJETIVOS
Estructura de la 
base de datos relacional
Una base de datos es un conjunto organizado de datos 
relacionados entre sí, 
administrados por un motor de base de datos, 
que sirve a una aplicación independientemente de esta.
Bases de datos
Base de datos no normalizada
Una base de datos es 
un conjunto organizado de 
datos relacionados entre sí, 
administrados por un motor de 
base de datos, 
que sirve a una aplicación 
independientemente de ésta.
Base de datos semi-normalizada
Una base de datos es 
un conjunto organizado de 
datos relacionados entre sí, 
administrados por un motor de 
base de datos, 
que sirve a una aplicación 
independientemente de ésta.
Una base de datos relacional es un conjunto de datos
separado en categorías lógicas, llamadas tablas.
Toda tabla está conformada por filas y columnas.
Las tablas tienen una columna destinada a un número único de 
identificación para cada fila, denominado clave primaria.
Una tabla A puede relacionarse con otra B, mediante una 
columna que contenga la clave primaria de la tabla B, esa tal 
columna se denomina clave foránea.
Una base de datos es 
un conjunto organizado de 
datos relacionados entre sí, 
administrados por un motor de 
base de datos, 
que sirve a una aplicación 
independientemente de ésta.
Bases de datos relacional
Estructura de la B.D. relacional
Una base de datos relacional es 
un conjunto de datos
separado en categorías lógicas, 
llamadas tablas. Toda tabla está 
conformada por filas y 
columnas. Las tablas tienen una 
columna destinada a un número 
único de identificación para cada 
fila, denominado clave primaria 
(PK). Una tabla A puede 
relacionarse con otra B, 
mediante una columna que 
contenga la clave primaria de la 
tabla B, esa tal columna se 
denomina clave foránea (FK).
Tablas
Clave 
primaria 
(PK)
Clave 
foránea
(FK)
Filas
Columnas
Base de datos normalizada
Relación u
no a mucho
s
Relación muchos a 
muchos
Base de datos normalizada
B.D. no normalizada:
B.D. normalizada:
Modelando una base
Conexión de Python 
a una base de datos SQLite
Structured Query Language
¿de qué se trata? 
Es un lenguaje de alto nivel para la manipulación de 
bases de datos relacionales. 
Se dice que es un lenguaje declarativo porque a través de él 
se indica qué se quiere hacer, pero no cómo hay que hacerlo. 
Structured Query Language
Cualquier persona con conocimiento del modelo de datos puede 
interactuar con la base de datos para realizar consultas, añadir 
nuevos registros, eliminarlos, actualizarlos, modificar los objetos que 
conforman la base de datos e incluso modificar la estructura de la 
misma.
Sublenguajes
Tal como anticipamos la clase anterior, tenemos los siguientes tipos: 
DDL
DML TCL
DCLConjunto de sentencias para la definición y modificación de 
la base de datos y sus tablas.
Conjunto de sentencias para la 
manipulación de los datos 
almacenados.
Conjunto de sentencias para la 
administración de los 
privilegios de los distintos 
usuarios que se conectarán a la 
base de datos.
Conjunto de sentencias para la 
gestión de transacciones.
DML
Lenguaje 
Estructurado de 
Consulta
DDL
Create
Alter
Drop
Truncate
Select from
Insert
Update
Delete
Sentencias básicas DML
SELECT FROM
INSERT
UPDATE
DELETE
para consultar una o más columnas de 
una tabla
para crear nuevas filas a una tabla.
para actualizar las filas de una tabla.
para eliminar las filas de una tabla.
SQLite es una librería 
escrita en C que viene 
con Python. Provee una 
base de datos simple, 
rápida y segura.
El módulo estándar 
sqlite3 nos brinda una 
interfaz de acceso a 
dicha librería. 
Creando una base de datos
import sqlite3
conexion = sqlite3.connect("base.db")
cursor = conexion.cursor()
cursor.close()
conexion.close()
Tipos de datos en 
SQLite:
Null
Integer
Real
Text
Blob
Creando tablas
import sqlite3
conexion = sqlite3.connect("base.db")
cursor = conexion.cursor()
cursor.execute = ("""
 CREATE TABLE Pais (
 id INTEGER PRIMARY KEY AUTOINCREMENT,
 nombre TEXT NOT NULL UNIQUE
 """)
conexion.commit()
cursor.close()
conexion.close()
CREATE TABLE Producto (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre TEXT NOT NULL UNIQUE
)
CREATE TABLE Cliente (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre TEXT NOT NULL,
    apellido TEXT NOT NULL,
    nacimiento TEXT,
    pais_origen_id INTEGER REFERENCES Pais(id) ON DELETE SET NULL
)
CREATE TABLE Cliente_Producto (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    cliente_id INTEGER REFERENCES Cliente(id) ON DELETE CASCADE,
    producto_id INTEGER REFERENCES Producto(id) ON DELETE CASCADE
)
Agregando registros
sql = "INSERT INTO Pais (nombre) VALUES (?)"
cursor.execute(sql, ("Argentina",))
conexion.commit()
INSERT INTO Tabla (columna1, columna2) VALUES (?, ?), 
("valor1", "valor2")
Consultando registros
sql = "SELECT * FROM Pais"
cursor.execute(sql)
items = cursor.fetchall()
print(items)
SELECT campo1, campo2 FROM Tabla WHERE ...
Modificando registros
sql = "UPDATE Pais SET nombre = ? WHERE nombre = ?"
cursor.execute(sql, ("Perú", "Uruguay"))
conexion.commit()
UPDATE Tabla SET campo = ? 
Eliminando registros
sql = "DELETE FROM Pais WHERE nombre = ?"
cursor.execute(sql, ("México",))
conexion.commit()
DELETE FROM Tabla WHERE campo = ?

Continuar navegando