SQLite3 en Python
SQLite es el sistema de bases de datos más utilizado del mundo y ofrece la posibilidad de configurar una base de datos de SQL que se pueda integrar directamente con aplicaciones 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 eficazmente con bases de datos dentro de Python, te recomendamos tener conocimientos previos en SQL y Python, los cuales harán que te sea más fácil tanto configurar como usar la base de datos.
Si quieres refrescar tus conocimientos de Python, merece la pena que eches un vistazo a nuestro tutorial de Python.
Crea tu propia base de datos: paso a paso
Configurar tu propia base de datos SQLite3 en Python apenas requiere unos pocos pasos. Una vez hayas terminado de configurar tu base de datos, puedes comunicarte con ella utilizando comandos SQL.
Paso 1. Importar SQLite3 a Python
Importa el módulo SQLite3 para tener acceso a las funciones específicas de SQLite3 en Python:
import sqlite3
pythonPaso 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 “connection”, que puedes utilizar para comunicarte con tu base de datos. A continuación, tienes un ejemplo que muestra cómo utilizar la función connect para establecer una conexión con una base de datos llamada “test”:
connection = sqlite3.connect("test.db")
pythonEl 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 correctamente
Comprueba si tu base de datos SQLite3 se ha creado correctamente. Para ello, utiliza la función “total_changes” para llamar al objeto connection. La función te mostrará el número total de filas modificadas desde que se estableció una conexión con tu base de datos relacional:
print(connection.total_changes)
pythonEn 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 almacenado informació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 estructura básica de tu base de datos
Si quieres añadir información a tu base de datos SQLite3 en Python, primero debes crear una tabla en la que almacenarla, de la misma forma que se suele hacer con las bases de datos relacionales.
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 introducir tiene el siguiente aspecto:
cursor = connection.cursor()
pythonA continuació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)")
pythonPaso 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)")
pythonSi 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¿Quieres hacer copias de seguridad de tu base de datos SQLite3 en tu propio servidor? Puedes elegir entre varios tipos de servidores. VPS es un servidor en la nube, idóneo para programas y volúmenes de datos pequeños. Si necesitas un servidor para aplicaciones empresariales, 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 información de otras bases de datos. Para ello, primero debes conectarte a la base de datos que quieres y, como te hemos mostrado anteriormente, crear un objeto connection y un cursor. Una vez establecida 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)
pythonLa 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 almacenados
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 necesitarás establecer una conexión creando un objeto connection 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")
pythonModificar 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")
pythonUtilizar marcadores de posición
Nunca debes utilizar Python strings para hacer consultas SQL dinámicas con operadores, ya que los hackers pueden explotarlos y atacar a tu programa con inyecciones 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 sustituyan cada marcador de posición que tenga un signo de interrogación.
Las siguientes consultas obtienen el mismo resultado, pero te recomendamos utilizar los marcadores 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))
pythonTen en cuenta que los signos de interrogación de la consulta SQL se sustituyen por las variables de la tupla en el mismo orden que aparecen.
Cierra la conexión a tu base de datos
Una vez realizadas todas las operaciones 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 directamente desde tu objeto connection:
connection.close()
python