SQLite

SQLite es un sistema de gestión de bases de datos relacional (RDBMS). A diferencia de otros sistemas de bases de datos relacionales, este es una pequeña librería escrita en C que ha de formar parte del programa que lo usa. La base de datos es un fichero que generalmente acompaña al programa y que contiene todos los elementos de la misma, como son las tablas, índices o los datos. Todo esto hace que el acceso sea muy rápido, pero como los datos se guardan en un fichero, este se ha de bloquear en cada transacción dificultando el uso concurrente. Esto hace que SQLite no sea rival con otras bases de datos como MySQL o PostgreSQL.

Sin embargo, el resto de ventajas y el hecho de que la licencia sea de dominio público, hacen esta librería única para programas que necesiten gestión de bases de datos.

La versión 3 de SQLite permite bases de datos de hasta 2 terabytes.

Python 3 trae incorporado una interface api para el acceso a bases de datos SQLite. Por lo que para usar este tipo de bases de datos solo es necesario incluir el paquete sqlite3 en la aplicación. Esto se consigue con la sentencia siguiente:

import sqlite3

Dado que la base de datos es un fichero y generalmente se pondrá en la misma carpeta donde se encuentra la aplicación, puede resultar interesante hacer uso del paquete os para obtener la ruta con el método getcwd(). Si la base de datos se llamara test.db3, una forma de obtener la ruta desde cualquier plataforma, podría ser esta:

import os
db = os.path.join(os.getcwd(),'test.db3')

Al tener la ruta asignada a la variable db, el siguiente paso será conectar la aplicación a la misma. Para esto, se hace uso del método connect() de sqlite3 para asignar el objeto sqlite3.Conection de la conexión a una variable, de la siguiente forma:

con = sqlite3.connect(db)

Con la conexión hecha sin errores, el siguiente paso es crear un objeto cursor con el que se podrán ejecutar las sentencias SQL contra la base de datos. Para esto se usa el método cursor().

cur = con.cursor()

Con el cursor creado se puede, por ejemplo, detectar si la tabla ya existe, borrarla si fuera el caso y crear una nueva. Para ello hay que ejecutar las sentencias siguientes:

cur.execute('''
DROP TABLE IF EXISTS Users''')
cur.execute('''
CREATE TABLE Users (nombre VARCHAR(128),email VARCHAR(128))''')

Se suele hacer un commit de la conexión para asegurarnos que todas las transacciones se han realizado correctamente antes de cerrar la conexión del cursor y la conexión.

con.commit()
cur.close()
con.close()

El ejemplo completo quedaría así:

import sqlite3
import os
db = os.path.join(os.getcwd(),'test.db3')
con = sqlite3.connect(db)
cur = con.cursor()
cur.execute('''
DROP TABLE IF EXISTS Users''')
cur.execute('''
CREATE TABLE Users (nombre VARCHAR(128),email VARCHAR(128))''')
con.commit()
cur.close()
con.close()

Tras la ejecución, se habrá creado una base de datos llamada test.db3 en la carpeta de la aplicación, esta base de datos contiene una tabla vacía llamada Users.

Para rellenarla con algún dato, pongamos por caso con diez nombres y emails, se puede usar el siguiente código. Este creará 10 usuarios comenzando por Usuario1, Usuario2, …, hasta Usuario10 y 10 emails del tipo Usuario1@pythonparatodo.com,….

import sqlite3
import os
db = os.path.join(os.getcwd(),'test.db3')
con = sqlite3.connect(db)
cur = con.cursor()
nombre='Usuario'
for x in range(10):
    cur.execute('''
     INSERT OR IGNORE INTO Users
     (nombre, email) VALUES (?,?)
    ''',(nombre+str(x+1),nombre+str(x+1)+'@pythonparatodo.com'))
con.commit()
cur.close()
con.close()

Para poder ver el contenido de la tabla, tan solo hay que hacer uso de la instrucción SELECT de SQL para obtener los datos y mostrarlos en pantalla.

import sqlite3
import os
db = os.path.join(os.getcwd(),'test.db3')
con = sqlite3.connect(db)
cur = con.cursor()
nombre='Usuario'
datos = cur.execute('''
SELECT * FROM Users ''')
for registro in datos:
    print(registro)
con.commit()
cur.close()
con.close()

Siendo este el resultado obtenido.

('Usuario1', 'Usuario1@pythonparatodo.com')
('Usuario2', 'Usuario2@pythonparatodo.com')
('Usuario3', 'Usuario3@pythonparatodo.com')
('Usuario4', 'Usuario4@pythonparatodo.com')
('Usuario5', 'Usuario5@pythonparatodo.com')
('Usuario6', 'Usuario6@pythonparatodo.com')
('Usuario7', 'Usuario7@pythonparatodo.com')
('Usuario8', 'Usuario8@pythonparatodo.com')
('Usuario9', 'Usuario9@pythonparatodo.com')
('Usuario10', 'Usuario10@pythonparatodo.com')

La web de SQLite se encuentra aquí: https://sqlite.org/index.html.

Para facilitar la visualización de datos es posible usar cualquier browser SQLite, DB Browser for SQLite es uno gratuito multiplataforma que se encuentra en la siguiente web: https://sqlitebrowser.org.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *