Dominando SQLite3: Guía Completa de Uso Básico

SQLite3 constituye una base de datos ligera integrada que encuentra широкое применación en dispositivos móviles, sistemas embebidos y aplicaciones de pequeño tamaño. No requiere un proceso de servidor independiente, ya que almacena todos los datos en un único archivo de disco, lo cual facilita enormemente el despliegue y la gestión de aplicaciones. Esta guía te llevará a dominar completamente el uso básico de SQLite3, incluyendo la creación de bases de datos, operaciones con tablas, manipulación de datos (inserción, actualización, eliminación y consulta), así como el uso de índices y transacciones.

一、SQLite3简介

SQLite3 es una biblioteca escrita en C que proporciona un motor de base de datos SQL independiente, sin servidor, sin configuración previa y transaccional. Su objetivo principal son los entornos embebidos, aunque también resulta ideal para aplicaciones pequeñas y entornos de desarrollo y pruebas.

二、Instalación de SQLite3

En la mayoría de los sistemas operativos modernos, SQLite3 viene preinstalado. Si no está instalado, puedes hacerlo mediante el gestor de paquetes correspondiente:

  • Ubuntu/Debian:
sudo apt-get install sqlite3
​

  • macOS:
brew install sqlite
​

  • Windows:

Descarga los archivos binarios precompilados desde el sitio oficial de SQLite.

三、Operaciones Básicas con SQLite3

3.1 Crear una Base de Datos

Una base de datos SQLite3 es fundamentalmente un archivo. Crear una base de datos equivale a crear un archivo nuevo.

sqlite3 bibliotecadb.sqlite
 ​

Este comando genera un archivo llamado bibliotecadb.sqlite y abre la herramienta interactiva de línea de comandos de SQLite3.

3.2 Crear Tablas

Se utiliza la instrucción SQL estándar para crear tablas. El siguiente ejemplo define una tabla llamada lectores con los campos identificador, nombre y correo.

CREATE TABLE lectores (
    identificador INTEGER PRIMARY KEY AUTOINCREMENT,
    nombre TEXT NOT NULL,
    correo TEXT NOT NULL UNIQUE
);
 ​

3.3 Insertar Datos

La instrucción INSERT permite agregar nuevos registros a una tabla.

INSERT INTO lectores (nombre, correo) VALUES ('María', 'maria@ejemplo.com');
INSERT INTO lectores (nombre, correo) VALUES ('José', 'jose@ejemplo.com');
 ​

3.4 Consultar Datos

La instrucción SELECT permite recuperar información de las tablas.

SELECT * FROM lectores;
 ​

Para aplicar filtros en las consultas, se utiliza la cláusula WHERE.

SELECT * FROM lectores WHERE nombre = 'María';
 ​

3.5 Actualizar Datos

La instrucción UPDATE modifica los valores existentes en los registros.

UPDATE lectores SET correo = 'maria_nuevo@ejemplo.com' WHERE nombre = 'María';
 ​

3.6 Eliminar Datos

La instrucción DELETE remove registros de una tabla.

DELETE FROM lectores WHERE nombre = 'José';
 ​

3.7 Crear Índices

Los índices mejoran significativamente la velocidad de las consultas. Se crean mediante la instrucción CREATE INDEX.

CREATE INDEX idx_lectores_nombre ON lectores (nombre);
 ​

3.8 Utilizar Transacciones

Las transacciones garantizan que un conjunto de operaciones se ejecute completamente o no se ejecute ninguna, manteniendo la integridad de los datos. Se utiliza BEGIN TRANSACTION para iniciar, COMMIT para confirmar y ROLLBACK para deshacer.

BEGIN TRANSACTION;
INSERT INTO lectores (nombre, correo) VALUES ('Carlos', 'carlos@ejemplo.com');
UPDATE lectores SET correo = 'maria_nuevo@ejemplo.com' WHERE nombre = 'María';
COMMIT;
 ​

Si ocurre algún error durante la transacción, se puede utilizar ROLLBACK para revertirlaxml-style.

BEGIN TRANSACTION;
INSERT INTO lectores (nombre, correo) VALUES ('Diego', 'diego@ejemplo.com');
-- Suponiendo que esta operación falla
UPDATE lectores SET correo = 'error@ejemplo.com' WHERE nombre = 'Error';
ROLLBACK;
 ​

四、Funciones Avanzadas de SQLite3

4.1 Triggers

Los triggers son instrucciones SQL que se ejecutan automáticamente cuando ocurre un evento específico. Se crean mediante la instrucción CREATE TRIGGER.

CREATE TRIGGER trigger_actualizacion_lector
AFTER UPDATE ON lectores
BEGIN
    INSERT INTO registros_auditoria (id_lector, accion) VALUES (NEW.identificador, 'ACTUALIZACION');
END;
 ​

4.2 Vistas

Las vistas son tablas virtuales definidas a partir del resultado de una consulta. Se crean con CREATE VIEW.

CREATE VIEW vista_correos_lectores AS
SELECT nombre, correo FROM lectores;
 ​

4.3 Consultas Parametrizadas

Al utilizar SQLite3 en aplicaciones, las consultas parametrizadas previenen ataques de inyección SQL.

import sqlite3

conexion = sqlite3.connect('bibliotecadb.sqlite')
cursor = conexion.cursor()

nombre_buscado = 'María'
cursor.execute("SELECT * FROM lectores WHERE nombre = ?", (nombre_buscado,))
print(cursor.fetchall())

conexion.close()
 ​

4.4 Importar y Exportar Datos

SQLite3 permite importar y exportar datos fácilmente. Se utiliza el comando .import para cargar archivos CSV y .dump para exportra el contenido de la base de datos.

sqlite3 bibliotecadb.sqlite
sqlite> .import datos.csv lectores
sqlite> .dump > respaldo.sql
 ​

五、Caso Práctico

5.1 Contexto del Proyecto

Supongamos que estamos desarrollando un sistema sederhana de gestión bibliotecaria, donde necesitamos almacenar información de libros y registros de préstamos.

5.2 Diseño de la Base de Datos

Necesitamos dos tablas: libros y registros_prestamo.

CREATE TABLE libros (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    titulo TEXT NOT NULL,
    autor TEXT NOT NULL,
    disponible INTEGER NOT NULL DEFAULT 1
);

CREATE TABLE registros_prestamo (
    id INTEGER PRIMARY KEY AUTOINCREMENT,
    id_libro INTEGER NOT NULL,
    prestatario TEXT NOT NULL,
    fecha_prestamo TEXT NOT NULL,
    fecha_devolucion TEXT,
    FOREIGN KEY (id_libro) REFERENCES libros(id)
);
 ​

5.3 Ejemplos de Operaciones

Insertar Datos de Libros

INSERT INTO libros (titulo, autor) VALUES ('Cien Años de Soledad', 'Gabriel García Márquez');
INSERT INTO libros (titulo, autor) VALUES ('El Principito', 'Antoine de Saint-Exupéry');
 ​

Etiquetas: SQLite base-de-datos SQL bases-de-datos-embebidas Python

Publicado el 6-10 17:21