2.5. SQLite¶
Nota
Propósito: es una libraría proporciona una interfaz SQL compatible con la especificación DB-API 2.0 requiere SQLite, 3.7.15 o posterior.
sqlite3, es una libraría de C que provee una base de datos ligera basada en disco que no requiere un proceso de servidor separado y permite acceder a la base de datos usando una variación no estándar del lenguaje de consulta SQL.

Figura 2.3, Logotipo de SQLite¶
Algunas aplicaciones pueden usar SQLite para almacenamiento interno. También es posible prototipar una aplicación usando SQLite y luego transferir el código a una base de datos más grande como PostgreSQL u Oracle.
2.5.1. Instalación¶
El módulo sqlite3
esta incluida en librería estándar de Python, puede probar la
instalación existe, ejecutando el siguiente comando:
python3 -c "import sqlite3 ; print(sqlite3.__package__)"
python3 -c "import sqlite3 ; print(sqlite3.__package__)"
Si muestra el nombre del módulo sqlite3
, tiene correctamente instalado el módulo.
Con esto, ya tiene todo listo para continuar.
Adicionalmente puedes instalar administradores de base de datos SQLite
nativos para sistemas
operativos Linux y Windows, a continuación se presentan alternativas:
2.5.1.1. SQLite Tools¶
Es un paquete de herramientas de línea de comandos para administrar archivos de base de datos SQLite, incluido el programa sqlite3.exe para la shell de línea de comandos, el programa sqldiff.exe y el programa sqlite3_analyzer.exe.
Para instalar el administrador de base de datos SQLite SQLite Tools
de
forma nativa para sistemas operativos Linux y Windows, a continuación se presentan
los modos de instalación:
Para instalar administradores de base de datos nativos sqlite3
para la plataforma
Unix/Linux debe seguir los siguientes pasos:
sudo apt install -y sqlite3
Puede probar si la instalación se realizo correctamente, ejecutando el siguiente comando:
sqlite3
Si ejecuto el comando anterior, este da como resultado lo siguiente:
SQLite version 3.40.1 2022-12-28 14:03:47
Enter ".help" for usage hints.
Connected to a transient in-memory database.
Use ".open FILENAME" to reopen on a persistent database.
sqlite>
Si muestra la consola SQLite sqlite>
, tiene correctamente instalado el administrador
de base de datos nativa sqlite3
por línea de comando.
Nota
Más información consulte https://www.sqlite.org/cli.html
Para instalar administradores de base de datos nativos sqlite3
para la plataforma
Windows debe descargar e instalar el SQLite Tools
con los siguientes pasos:
Cree el directorio donde se va a descomprimir las utilidades del SQLite Tools
, con
los siguientes comandos:
mkdir %HOMEPATH%\sqlite
Acceder al directorio sqlite
con el siguiente comando:
cd %HOMEPATH%\sqlite
Seguidamente descargue el SQLite Tools para Windows desde la siguiente

Figura 2.4, Descargar SQLite Tools para Windows¶
Descomprima del archivo descargado para el SQLite Tools
dentro
del directorio previamente creado.
sqlite/
├── sqldiff.exe
├── sqlite3.exe
└── sqlite3_analyzer.exe
La estructura previa es como debe quedar el luego de instalar SQLite Tools
en Windows.
Shell de línea de comandos, el proyecto SQLite proporciona un programa de línea de comandos simple llamado sqlite3.exe en Windows que permite al usuario ingresar y ejecutar instrucciones SQL manualmente en una base de datos SQLite. Para usar esta utilidad de línea de comandos, ejecute el siguiente comando:
sqlite3.exe
Nota
Más información consulte https://www.sqlite.org/cli.html
Diferencias de contenido, el proyecto SQLite proporciona un programa sqldiff.exe de línea de comandos que muestra las diferencias de contenido entre las bases de datos SQLite. Para usar esta utilidad de línea de comandos, ejecute el siguiente comando:
sqldiff.exe database1.sqlite database2.sqlite
Nota
Más información consulte https://www.sqlite.org/sqldiff.html
Analizador de base de datos, el proyecto SQLite proporciona un programa sqlite3_analyzer.exe de línea de comandos que mide y muestra la cantidad y la eficiencia del espacio utilizado por tablas e índices individuales con un archivo de base de datos SQLite. Para usar esta utilidad de línea de comandos, ejecute el siguiente comando:
sqlite3_analyzer.exe database.sqlite
Nota
Más información consulte https://www.sqlite.org/sqlanalyze.html
2.5.1.2. DB Browser for SQLite¶
DB Browser for SQLite (DB4S), es una herramienta de código abierto, visual y de alta calidad para crear, diseñar y editar archivos de bases de datos compatibles con SQLite.
Esta herramienta esta destinada para usuarios y desarrolladores que desean crear, buscar y editar bases de
datos. DB4S
utiliza una interfaz familiar similar a una hoja de cálculo y no es necesario aprender
complicados comandos SQL.

Figura 2.5, Logotipo de DB Browser for SQLite¶
Los controles y asistentes están disponibles para que los usuarios:
Crear y compactar archivos de base de datos.
Crear, definir, modificar y eliminar tablas.
Crear, definir y eliminar índices.
Explorar, editar, agregar y eliminar registros.
Buscar registros.
Importar y exportar registros como texto.
Importar y exportar tablas desde/a archivos CSV.
Importar y exportar bases de datos desde/hacia archivos de volcado de SQL.
Emita consultas SQL e inspeccione los resultados.
Examinar un registro de todos los comandos SQL emitidos por la aplicación.
Trace gráficos simples basados en tablas o datos de consulta.
Nota
Más información consulte https://sqlitebrowser.org/
Para instalar el administrador de base de datos SQLite DB Browser for SQLite (DB4S)
de forma nativa para sistemas operativos Linux y Windows, a continuación se presentan
los modos de instalación:
Para instalar el programa sqlitebrowser
para administrador de base de datos nativos
sqlite3
para la plataforma Unix/Linux debe seguir los siguientes pasos:
sudo apt install -y sqlitebrowser
Puede probar si la instalación del el administrador de base de datos nativo de sqlite3
gráfico llamado sqlitebrowser
se realizo correctamente, ejecutando el siguiente comando:
sqlitebrowser
El comando anterior debería mostrar la interfaz gráfica de sqlitebrowser
, como se muestra
a continuación:

Figura 2.6, DB Browser for SQLite en Linux¶
Si muestra la interfaz gráfica de sqlitebrowser
, tiene correctamente instalado el administrador
de base de datos gráfico nativo de sqlite3
.
Para instalar el programa DB Browser for SQLite
para administrador de base de datos nativos
sqlite3
para la plataforma Windows debe seguir los siguientes pasos:
Debe descargar el software desde la página https://sqlitebrowser.org/dl/
Instalar el software instalador de DB Browser for SQLite
.
Luego valla al Menu de inicio > Aplicaciones > DB Browser (SQLite)

Figura 2.7, DB Browser for SQLite en Windows 10 Pro¶
Si muestra la interfaz gráfica de DB Browser for SQLite
, tiene
correctamente instalada el administrador de base de datos nativo de
sqlite3
.
2.5.1.3. Estructura de archivos¶
Para crear la estructura de archivos del proyecto SQLite
debe ejecutar los siguientes comandos:
Crear el directorio crud
con el siguiente comando:
Crear y acceder al directorio en un solo comando, ejecutando el siguiente comando:
mkdir -p ~/proyectos/sqlite/crud && cd $_
El comando anterior crea la siguiente estructura de directorios:
proyectos/
└── sqlite/
└── crud/
Para realizar esta práctica debe crear la estructura de archivos del proyecto, ejecute el siguiente comando:
Debe crear el directorio crud
, ejecutando el siguiente comando:
md .\proyectos\sqlite\crud
Debe acceder al directorio , ejecutando el siguiente comando:
cd .\proyectos\sqlite\crud
El comando anterior crea la siguiente estructura de directorios:
proyectos/
└── sqlite/
└── crud/
Si tiene la estructura de archivo previa, entonces puede continuar con la siguiente sección.
2.5.2. Cadenas de conexión¶
Para definir el método connect
debe definir las cadenas de conexión con SQLite
como se describe a continuación:
DB_PATH
Ruta absoluta o relativa del archivo de base de datos
SQLite
.DB_FILE
Nombre del archivo de base de datos
SQLite
.
A continuación presento un ejemplo en Python implementando una cadena de conexión
para una base de datos SQLite
:
1 2 3 4 5 6 7 8 |
|
El ejemplo anterior se describe a continuación:
En la línea 1, se importa el módulo
os
de la librería estándar de Python.En la línea 2, se importa el módulo
sqlite3
de la librería estándar de Python.En la línea 4, se define en la constante
DB_PATH
la ruta absoluta usada para guardar la base de datos.En la línea 5, se define en la constante
DB_FILE
el nombre de la base de datos.En la línea 6, se define en la constante
DB
la ruta completa usada para leer la base de datos.
De esta forma se crea una cadena de conexión para SQLite
para ser usada por el método connect
.
2.5.3. Insertar registros¶
Si requiere insertar registro en una tabla, a continuación tiene un ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 |
|
Importante
Usted puede descargar el código usado en esta sección haciendo clic en el siguiente enlace:
Truco
Para ejecutar el código sqlite3_record_insert.py
abra una consola de comando, acceda al directorio donde se encuentra el programa:
proyectos/
└── sqlite/
└── crud/
└── sqlite_record_insert.py
Si tiene la estructura de archivo previa, entonces ejecute el siguiente comando:
python3 sqlite_record_insert.py
El anterior código al ejecutar debe mostrar el siguiente mensaje:
INFO:root:✅ ¡Conectado a la base de datos 'sistema.db'!
INFO:root:✅ ¡Fue creo una tabla correctamente en la base de datos 'sistema.db'!
INFO:root:✅ ¡Fueron insertado(s) 3 registro(s) correctamente en la tabla!
INFO:root:✅ ¡Fueron insertado(s) 1 registro(s) correctamente en la tabla!
INFO:root:✅ ¡La conexión SQLite a la base de datos 'sistema.db' fue cerrada!
De esta forma puede ingresar registros en una tabla dentro una base de datos SQLite
.
2.5.4. Consultar registros¶
Si requiere consultar registros de tabla, a continuación tiene un ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 |
|
Importante
Usted puede descargar el código usado en esta sección haciendo clic en el siguiente enlace:
Truco
Para ejecutar el código sqlite3_record_select.py
abra una consola de comando, acceda al directorio donde se encuentra el programa:
proyectos/
└── sqlite/
└── crud/
└── sqlite_record_select.py
Si tiene la estructura de archivo previa, entonces ejecute el siguiente comando:
python3 sqlite_record_select.py
El anterior código al ejecutar debe mostrar el siguiente mensaje:
INFO:root:✅ ¡Conectado a la base de datos 'sistema.db'!
📜 Total de filas son: 4
📜 Mostrar cada fila:
Id: 1
Nombre: Leonardo Caballero
Código postal: 5001
Teléfono: +58-412-4734567
Id: 2
Nombre: Ana Poleo
Código postal: 6302
Teléfono: +58-426-5831297
Id: 3
Nombre: Manuel Matos
Código postal: 4001
Teléfono: +58-414-2360943
Id: 4
Nombre: Liliana Andradez
Código postal: 3105
Teléfono: +58-414-6782473
INFO:root:✅ ¡La conexión SQLite a la base de datos 'sistema.db' fue cerrada!
De esta forma puede consultar registros en una tabla dentro una base de datos SQLite
.
2.5.5. Actualizar registros¶
Si requiere actualizar registro de tabla, a continuación tiene un ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 |
|
Importante
Usted puede descargar el código usado en esta sección haciendo clic en el siguiente enlace:
Truco
Para ejecutar el código sqlite3_record_update.py
abra una consola de comando, acceda al directorio donde se encuentra el programa:
proyectos/
└── sqlite/
└── crud/
└── sqlite_record_update.py
Si tiene la estructura de archivo previa, entonces ejecute el siguiente comando:
python3 sqlite_record_update.py
El anterior código al ejecutar debe mostrar el siguiente mensaje:
INFO:root:✅ ¡Conectado a la base de datos 'sistema.db'!
INFO:root:✅ ¡Fueron actualizado(s) 2 registro(s) correctamente en la tabla!
INFO:root:✅ ¡La conexión SQLite a la base de datos 'sistema.db' fue cerrada!
De esta forma puede actualizar registros en una tabla dentro una base de datos SQLite
.
2.5.6. Eliminar registros¶
Si requiere eliminar registro de tabla, a continuación tiene un ejemplo:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
|
Importante
Usted puede descargar el código usado en esta sección haciendo clic en el siguiente enlace:
Truco
Para ejecutar el código sqlite3_record_delete.py
abra una consola de comando, acceda al directorio donde se encuentra el programa:
proyectos/
└── sqlite/
└── crud/
└── sqlite_record_delete.py
Si tiene la estructura de archivo previa, entonces ejecute el siguiente comando:
python3 sqlite_record_delete.py
El anterior código al ejecutar debe mostrar el siguiente mensaje:
INFO:root:✅ ¡Conectado a la base de datos 'sistema.db'!
INFO:root:✅ ¡Registro eliminado correctamente!
INFO:root:✅ ¡La conexión SQLite a la base de datos 'sistema.db' fue cerrada!
De esta forma puede eliminar registros en una tabla dentro una base de datos SQLite
.
Nota
Así de esta forma puede realizar las operaciones de ingresar, consultar, actualizar
y eliminar registro en una tabla en una base de datos SQLite
de forma separada
en programas Python, en la siguiente práctica se mostrara un caso real de uso de todos
estas operaciones en un solo programa Python.
2.5.7. Práctica - Caso real¶
A continuación se presenta una práctica más real de implementar el uso de proyectos
con sqlite3
, a continuación la estructura de proyecto llamado sqlite
:
A continuación se presenta y explica el uso de cada archivo para este proyecto:
Archivo .env.example
Archivo plantilla dotenv del paquete adicional python-dotenv.
1 2 |
|
Archivo requirements.txt
Archivo de requirements.txt de la herramienta de gestión de paquetes pip.
1 2 |
|
Archivo settings.py
Módulo de configuraciones del programa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
|
Archivo main.py
Módulo de principal del programa.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 |
|
Teniendo creada la anterior estructura de proyecto, vuelva a ejecutar ahora el módulo con el siguiente comando, el cual a continuación se presentan el correspondiente comando de tu sistema operativo:
Antes de ejecutar debes instalar sus dependencias, con el siguiente comando:
pip3 install -r requirements.txt
Además debe crear el archivo .env
en base a la plantilla .env.example`
y editarlo, con el siguiente comando:
cp .env.example .env && nano .env
Truco
El archivo .env
se definen las configuraciones de conexión a la base de datos,
puede modificarlo cambiar valores de la conexión.
Truco
Para ejecutar el código del proyecto llamado sistema
abra una consola de comando,
acceda al directorio donde se encuentra el programa:
proyectos/
└── sqlite/
└── sistema/
├── __init__.py
├── .env
├── .env.example
├── main.py
├── requirements.txt
└── settings.py
Si tiene la estructura de archivo previa, entonces puede continuar con la ejecución del código fuente.
Truco
Para ejecutar el código fuente de esta práctica debe invocar al módulo main.py
,
abra una consola de comando, acceda al directorio donde se encuentra la estructura previa
y ejecute el siguiente comando:
python3 main.py
El anterior código al ejecutar debe mostrar el siguiente mensaje:
INFO:root:✅ ¡Conexión a la base de datos 'sistema.db' fue exitosa!
INFO:root:✅ ¡Fueron insertado(s) 3 registro(s) correctamente en la tabla!
INFO:root:✅ ¡Fueron insertado(s) 1 registro(s) correctamente en la tabla!
📜 Total de filas son: 4
📜 Mostrar cada fila:
Id: 1
Nombre: Leonardo Caballero
Código postal: 5001
Teléfono: +58-412-4734567
Id: 2
Nombre: Ana Poleo
Código postal: 6302
Teléfono: +58-426-5831297
Id: 3
Nombre: Manuel Matos
Código postal: 4001
Teléfono: +58-414-2360943
Id: 4
Nombre: Liliana Andradez
Código postal: 3105
Teléfono: +58-414-6782473
INFO:root:✅ ¡Fueron actualizado(s) 2 registro(s) correctamente en la tabla!
INFO:root:✅ ¡Registro eliminado correctamente!
INFO:root:✅ ¡La conexión SQLite a la base de datos 'sistema.db' fue cerrada!
La ejecución anterior generar la siguiente estructura:
proyectos/
└── sqlite/
└── sistema/
├── __init__.py
├── .env
├── .env.example
├── main.py
├── requirements.txt
├── settings.py
└── sistema.db
Archivo sistema.db
Archivo de base de datos de SQLite llamado sistema.db
la cual no se incluye ya que cada vez que se inicia el programa main.py
se elimina y crea
nuevamente, para cuidar la creación de los datos iniciales.
Antes de ejecutar debes instalar sus dependencias, con el siguiente comando:
pip3 install -r requirements.txt
Además debe crear el archivo .env
en base a la plantilla .env.example
, con
el siguiente comando:
copy .env.example .env
Editar el archivo .env
, con el siguiente comando:
notepad.exe .env &
Truco
El archivo .env
se definen las configuraciones de conexión a la base de datos,
puede modificarlo cambiar valores de la conexión.
Truco
Para ejecutar el código del proyecto llamado sistema
abra una consola de comando,
acceda al directorio donde se encuentra el programa:
proyectos/
└── sqlite/
└── sistema/
├── __init__.py
├── .env
├── .env.example
├── main.py
├── requirements.txt
├── settings.py
└── sistema.db
Si tiene la estructura de archivo previa, entonces puede continuar con la ejecución del código fuente.
Truco
Para ejecutar el código fuente de esta práctica debe invocar al módulo main.py
,
abra una consola de comando, acceda al directorio donde se encuentra la estructura previa
y ejecute el siguiente comando:
python3 main.py
El anterior código al ejecutar debe mostrar el siguiente mensaje:
INFO:root:✅ ¡Conexión a la base de datos 'sistema.db' fue exitosa!
INFO:root:✅ ¡Fueron insertado(s) 3 registro(s) correctamente en la tabla!
INFO:root:✅ ¡Fueron insertado(s) 1 registro(s) correctamente en la tabla!
📜 Total de filas son: 4
📜 Mostrar cada fila:
Id: 1
Nombre: Leonardo Caballero
Código postal: 5001
Teléfono: +58-412-4734567
Id: 2
Nombre: Ana Poleo
Código postal: 6302
Teléfono: +58-426-5831297
Id: 3
Nombre: Manuel Matos
Código postal: 4001
Teléfono: +58-414-2360943
Id: 4
Nombre: Liliana Andradez
Código postal: 3105
Teléfono: +58-414-6782473
INFO:root:✅ ¡Fueron actualizado(s) 2 registro(s) correctamente en la tabla!
INFO:root:✅ ¡Registro eliminado correctamente!
INFO:root:✅ ¡La conexión SQLite a la base de datos 'sistema.db' fue cerrada!
La ejecución anterior generar la siguiente estructura:
proyectos/
└── sqlite/
└── sistema/
├── __init__.py
├── .env
├── .env.example
├── main.py
├── requirements.txt
├── settings.py
└── sistema.db
Archivo sistema.db
Archivo de base de datos de SQLite llamado sistema.db
la cual no se incluye ya que cada vez que se inicia el programa main.py
se elimina y crea
nuevamente, para cuidar la creación de los datos iniciales.
Así de esta forma puede ingresar, consultar, actualizar y eliminar registro en una
tabla usando SQLite
.
Importante
Usted puede descargar el código usado en esta sección haciendo clic en los siguientes enlaces:
Así de esta forma puede replicar una práctica real de un proyecto para realizar operaciones
en una base de datos SQLite
, aplicando buenas prácticas de código funcional.
Ver también
Consulte la sección de lecturas suplementarias del entrenamiento para ampliar su conocimiento en esta temática.
¿Cómo puedo ayudar?
¡Mi soporte está aquí para ayudar!
Mi horario de oficina es de lunes a sábado, de 9 AM a 5 PM. UTM - Madrid, España.
La hora aquí es actualmente 7:35 PM UTM.
Mi objetivo es responder a todos los mensajes dentro de un día hábil.
