SQLite3: trabajo integrado con SQLite en Python

Entrenador de Python en Línea para Principiantes

Aprende Python fácilmente sin sobrecargarte de teoría. Resuelve tareas prácticas con verificación automática, recibe pistas y escribe código directamente en el navegador, sin instalar nada.

Start Course

Introducción a SQLite y al módulo sqlite3

SQLite es un sistema de gestión de bases de datos relacionales compacto que no requiere instalar un servidor independiente y es ideal para desarrollar proyectos pequeños y medianos. En Python, el soporte para SQLite se implementa a través del módulo integrado sqlite3, lo que permite trabajar con bases de datos sin instalar librerías adicionales.

El módulo sqlite3 convierte la creación y el uso de bases de datos en un proceso similar a trabajar con archivos comunes. Esta solución es especialmente valiosa para prototipado, sistemas embebidos, aplicaciones de escritorio y fines educativos.

Instalación y compatibilidad

El módulo sqlite3 está incluido en la librería estándar de Python desde la versión 2.5 y está disponible sin instalación adicional. Ofrece compatibilidad total con los sistemas operativos Windows, macOS y Linux, proporcionando una interfaz para trabajar con SQLite versión 3.

import sqlite3

Conexión a la base de datos y creación de la conexión

Creación de una base de datos en archivo

conn = sqlite3.connect('mi_base_de_datos.db')

Al ejecutar este comando, la base de datos se crea automáticamente si el archivo especificado no existe.

Creación de una base de datos en memoria

conn = sqlite3.connect(':memory:')

Esta opción es especialmente útil para pruebas y operaciones temporales.

Parámetros adicionales de conexión

conn = sqlite3.connect('database.db', 
                      check_same_thread=False,
                      detect_types=sqlite3.PARSE_DECLTYPES)

Creación de tablas y trabajo con el esquema de datos

Creación de tablas

cursor = conn.cursor()
cursor.execute('''
    CREATE TABLE usuarios (
        id INTEGER PRIMARY KEY AUTOINCREMENT,
        nombre TEXT NOT NULL,
        edad INTEGER,
        email TEXT UNIQUE,
        creado_en TIMESTAMP DEFAULT CURRENT_TIMESTAMP
    )
''')
conn.commit()

Tipos de datos en SQLite

SQLite admite cinco tipos de datos principales:

  • INTEGER - números enteros
  • REAL - números de punto flotante
  • TEXT - cadenas de texto
  • BLOB - datos binarios
  • NULL - ausencia de valor

SQLite utiliza tipado dinámico, lo que ofrece flexibilidad, pero requiere atención al trabajar con los datos.

Operaciones CRUD (Crear, Leer, Actualizar, Eliminar)

Inserción de datos

# Inserción de un solo registro
cursor.execute("INSERT INTO usuarios (nombre, edad, email) VALUES (?, ?, ?)", 
               ("Juan Pérez", 30, "juan@ejemplo.com"))

# Inserción de varios registros
datos_usuarios = [
    ("María García", 25, "maria@ejemplo.com"),
    ("Pedro López", 35, "pedro@ejemplo.com"),
    ("Ana Martínez", 28, "ana@ejemplo.com")
]
cursor.executemany("INSERT INTO usuarios (nombre, edad, email) VALUES (?, ?, ?)", datos_usuarios)
conn.commit()

Consulta de datos

# Consultar todos los registros
cursor.execute("SELECT * FROM usuarios")
todos_usuarios = cursor.fetchall()

# Consulta con condición
cursor.execute("SELECT nombre, edad FROM usuarios WHERE edad > ?", (25,))
usuarios_adultos = cursor.fetchall()

# Consulta con ordenamiento
cursor.execute("SELECT * FROM usuarios ORDER BY edad DESC")
usuarios_ordenados = cursor.fetchall()

Actualización de datos

cursor.execute("UPDATE usuarios SET edad = ? WHERE nombre = ?", (31, "Juan Pérez"))
conn.commit()

# Obtener el número de filas actualizadas
print(f"Filas actualizadas: {cursor.rowcount}")

Eliminación de datos

cursor.execute("DELETE FROM usuarios WHERE nombre = ?", ("Ana Martínez",))
conn.commit()
print(f"Filas eliminadas: {cursor.rowcount}")

Recommendations