Descarga la aplicación para disfrutar aún más
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 = ?
Compartir