SQLite es el sistema de bases de datos más utilizado del mundo y ofrece la po­si­bi­li­dad de co­n­fi­gu­rar una base de datos de SQL que se pueda integrar di­re­c­ta­me­n­te con apli­ca­cio­nes de diversos tipos. Python también soporta SQLite3 con su propio módulo.

Utilizar SQLite3 en Python

Puedes integrar SQLite dentro de Python en forma de módulo. Si quieres trabajar efi­ca­z­me­n­te con bases de datos dentro de Python, te re­co­me­n­da­mos tener co­no­ci­mie­n­tos previos en SQL y Python, los cuales harán que te sea más fácil tanto co­n­fi­gu­rar como usar la base de datos.

Consejo

Si quieres refrescar tus co­no­ci­mie­n­tos de Python, merece la pena que eches un vistazo a nuestro tutorial de Python.

Crea tu propia base de datos: paso a paso

Co­n­fi­gu­rar tu propia base de datos SQLite3 en Python apenas requiere unos pocos pasos. Una vez hayas terminado de co­n­fi­gu­rar tu base de datos, puedes co­mu­ni­car­te con ella uti­li­za­n­do comandos SQL.

Paso 1. Importar SQLite3 a Python

Importa el módulo SQLite3 para tener acceso a las funciones es­pe­cí­fi­cas de SQLite3 en Python:

import sqlite3
python

Paso 2. Crear la base de datos

Utiliza la función SQLite “connect()” para crear tu propia base de datos. La función retorna un objeto llamado “co­n­ne­c­tion”, que puedes utilizar para co­mu­ni­car­te con tu base de datos. A co­n­ti­nua­ción, tienes un ejemplo que muestra cómo utilizar la función connect para es­ta­ble­cer una conexión con una base de datos llamada “test”:

connection = sqlite3.connect("test.db")
python

El parámetro de conexión de la función es un archivo de la base de datos. Si aún no has creado un archivo en la base de datos llamado “test.db”, la propia función connect lo hará al ser ejecutada.

Paso 3. Comprobar que la base de datos se ha creado co­rre­c­ta­me­n­te

Comprueba si tu base de datos SQLite3 se ha creado co­rre­c­ta­me­n­te. Para ello, utiliza la función “total_changes” para llamar al objeto co­n­ne­c­tion. La función te mostrará el número total de filas mo­di­fi­ca­das desde que se es­ta­ble­ció una conexión con tu base de datos re­la­cio­nal:

print(connection.total_changes)
python

En nuestro caso, la función debería devolver el valor “0”, ya que aún no hemos utilizado ningún comando SQL y, por tanto, la base de datos sigue vacía e intacta. Si se da el caso de que ya has al­ma­ce­na­do in­fo­r­ma­ción en tu base de datos, el valor que obtendrás de la función “total_changes” será distinto, por supuesto.

Paso 4. Crear la es­tru­c­tu­ra básica de tu base de datos

Si quieres añadir in­fo­r­ma­ción a tu base de datos SQLite3 en Python, primero debes crear una tabla en la que al­ma­ce­nar­la, de la misma forma que se suele hacer con las bases de datos re­la­cio­na­les.

Para ello, primero debes utilizar la función “cursor” de SQLite3 en Python, de esta forma creas un cursor que te permite enviar comandos SQL a tu base de datos. El código que necesitas in­tro­du­cir tiene el siguiente aspecto:

cursor = connection.cursor()
python

A co­n­ti­nua­ción, puedes utilizar la función “execute” del módulo SQLite3 para enviar comandos SQL a tu base de datos. El código Python para crear una base de datos con el nombre “example” y las columnas “id”, “name” y “age” es el siguiente:

cursor.execute("CREATE TABLE IF NOT EXISTS example (id INTEGER, name TEXT, age INTEGER)")
python

Paso 5. Añadir datos

La sintaxis que se utiliza para añadir datos a una tabla es la misma que has utilizado en el paso 4 para crearla:

cursor.execute("INSERT INTO example VALUES (1, 'alice', 20)")
cursor.execute("INSERT INTO example VALUES (2, 'bob', 30)")
cursor.execute("INSERT INTO example VALUES (3, 'eve', 40)")
python

Si utilizas el código Python anterior, añades tres entradas a la tabla de tu base de datos llamada “example”.

Utiliza la función “commit” para guardar los cambios que has efectuado en tu base de datos:

connection.commit()
python
Consejo

¿Quieres hacer copias de seguridad de tu base de datos SQLite3 en tu propio servidor? Puedes elegir entre varios tipos de se­r­vi­do­res. VPS es un servidor en la nube, idóneo para programas y volúmenes de datos pequeños. Si necesitas un servidor para apli­ca­cio­nes em­pre­sa­ria­les, tu mejor opción sería el servidor dedicado.

Leer datos

SQLite3 enPython no solo te sirve para crear tus propias bases de datos, sino también para leer y extraer in­fo­r­ma­ción de otras bases de datos. Para ello, primero debes co­ne­c­tar­te a la base de datos que quieres y, como te hemos mostrado an­te­rio­r­me­n­te, crear un objeto co­n­ne­c­tion y un cursor. Una vez es­ta­ble­ci­da la conexión puedes realizar tu consulta SQL, enviar el resultado a tu base de datos con “execute” y mostrar las filas obtenidas con la función “fetchall”:

cursor.execute("SELECT * FROM example")
rows = cursor.fetchall()
for row in rows:
    print(row)
python

La función “fetchall” te muestra una lista con las filas que coinciden con tu consulta. Puedes combinar un bucle for en Python con una sentencia print para que aparezcan todas las líneas en la consola.

Modificar los datos al­ma­ce­na­dos

También puedes modificar o borrar el contenido de tu base de datos, ya que SQLite3 soporta el conjunto de comandos SQL. Para ello, envía los comandos SQL a tu base de datos. No olvides que, al igual que antes, primero ne­ce­si­ta­rás es­ta­ble­cer una conexión creando un objeto co­n­ne­c­tion y un cursor.

Borrar datos

Puedes utilizar el siguiente comando para borrar la línea con ID 1:

cursor.execute("DELETE FROM example WHERE id = 1")
python

Modificar datos

Utiliza el siguiente comando para cambiar la edad en la línea con ID 2:

cursor.execute("UPDATE example SET age = 31 WHERE id = 2")
python

Utilizar ma­r­ca­do­res de posición

Nunca debes utilizar Python strings para hacer consultas SQL dinámicas con ope­ra­do­res, ya que los hackers pueden ex­plo­tar­los y atacar a tu programa con in­ye­c­cio­nes SQL. Evita utilizar valores, utiliza el marcador de posición “?” cuando hagas una consulta SQL y hazla con “execute”. Introduce una tupla de Python en la función “execute” para que las variables su­s­ti­tu­yan cada marcador de posición que tenga un signo de in­te­rro­ga­ción.

Las si­guie­n­tes consultas obtienen el mismo resultado, pero te re­co­me­n­da­mos utilizar los ma­r­ca­do­res de posición:

# Consulta SQL directa
cursor.execute("UPDATE example SET age = 31 WHERE id = 2")
# Consulta SQL con marcadores de posición
age_var = 31
id_var = 2
cursor.execute("UPDATE example SET age = ? WHERE id = ?", (age_var, id_var))
python

Ten en cuenta que los signos de in­te­rro­ga­ción de la consulta SQL se su­s­ti­tu­yen por las variables de la tupla en el mismo orden que aparecen.

Cierra la conexión a tu base de datos

Una vez rea­li­za­das todas las ope­ra­cio­nes que querías, debes cerrar la conexión a tu base de datos. El módulo SQLite3 en Python también cuenta con una función que puedes llamar di­re­c­ta­me­n­te desde tu objeto co­n­ne­c­tion:

connection.close()
python
Ir al menú principal