English English

SQLite en Python - Créer et accéder aux données des bases de données dans votre application Python

Esta es una introducción a SQLite en Python. Aprenderá a crear una base de datos en su aplicación Python. Pero también cómo acceder y editar los datos de la base de datos.

Es necesario importar el módulo de Python "sqlite3". (Comando "import sqlite3").
Todas las operaciones de SQLite se realizan a través del módulo de Python "sqlite3" que se conecta a la base de datos de SQLite y se adhiere a la API de la base de datos de Python.

 

Creación de la base de datos

La conexión a la base de datos se crea mediante el método "connect" que devuelve un objeto de conexión SQLite. Este objeto de conexión SQLite se utiliza para acceder al "cursor" y para confirmar los cambios en la base de datos.
El "cursor" se utiliza para ejecutar consultas SQLite a través de la función "ejecutar", que se utilizan para crear o acceder a los datos de la base de datos. El método execute() devuelve también las filas de la base de datos, si se utiliza para consultar datos de la base de datos.
Se puede acceder a estas filas de la base de datos a través de los métodos fetchall(), fetchone() y fetchmany().

import sqlite3

try:
    sqliteCon = sqlite3.connect('Datebase_python.db')
    query_create_table = 	'''CREATE TABLE mytable (
                                id INTEGER PRIMARY KEY,
                                prename TEXT NOT NULL,
				surname TEXT NOT NULL,
                                countrycode INTEGER NOT NULL UNIQUE,
                                birthday datetime,
                                expenses REAL NOT NULL);'''

    cursor = sqliteCon.cursor()
    print("Connected to the database")
    cursor.execute(query_create_table)
    sqliteCon.commit()
    print("Database created")
    cursor.close()

except sqlite3.Error as error:
    print("Error while creating the table - ", error)
	
finally:
    if (sqliteCon):
        sqliteCon.close()
        print("database connection is closed")

El método commit() debe ser llamado en el objeto de conexión SQLite para aplicar (persistir) los cambios en la base de datos.
Si ha terminado de acceder a la base de datos, no olvide cerrar el cursor y la conexión SQLite mediante el método close().

Tipos de bases de datos importantes de SQLite

Estos tipos de bases de datos (y sus equivalentes en Python) se utilizan para guardar valores en las bases de datos de SQLite:

  • NULL: – Python: none - Un valor nulo
  • INTEGER: – Python: int - Un valor de punto flotante p.ej.: 1,2,3,4
  • REAL: – Python: float - Un valor de punto flotante p.ej.: 2.94
  • TEXT: – Python: str - Cadena de texto que usa codificación UTF-8, UTF-16BE o UTF-16LE
  • BLOB: – Python: bytes - Un blob de datos (datos binarios) utilizado para almacenar imágenes y archivos

Información sobre las clases de error disponibles en SQLite

En este ejemplo se ha utilizado la clase "Error" que devuelve todo tipo de errores ocurridos en relación con SQLite, su base de datos y la conexión a la base de datos.
La clase "Error" es una subclase de "Excepción" y también la clase base para otro tipo de errores y clases de error.
Otras clases de error:

sqlite3.DatabaseError
Esta es una clase base para los errores relacionados con la base de datos. Un ejemplo para un error: No se ha definido un fichero de base de datos.

Esta clase "DatabaseError" tiene las siguientes subclases importantes:

  • sqlite3.IntegrityError
    Errores sobre la integridad de la base de datos. Por ejemplo: falla la comprobación de una clave externa.
  • sqlite3.ProgrammingError
    Errores que ocurren debido a errores de programación en su consulta SQL. Por ejemplo: La tabla que desea crear ya existe.
  • sqlite3.OperationalError
    Errores en el funcionamiento y la conexión de la base de datos. Por ejemplo: El servidor de la base de datos se ha caído o desconectado accidentalmente.

 

Acceso a los datos de la base de datos

Se pueden consultar los datos de la base de datos de SQLite mediante el método execute() que recibe como argumento un comando SQL. En este caso utilizamos el comando SQL "SELECT * FROM".

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()
query_select_all = "SELECT * FROM mytable"
cursor.execute(query_select_all)
tablerows = cursor.fetchall()
print("Number of all rows: ", len(tablerows))
print("All rows in the table mytable: ")

for row in tablerows:
print("Id: ", row[0])
print("Prename: ", row[1]) 
print("Surname: ", row[2])
print("Country Code: ", row[3])
print("Birthday: ", row[4])
print("Expenses: ", row[4])
print("------\n")

cursor.close()
sqliteCon.close()

El método fetchall() devuelve las filas de la base de datos de la consulta de la base de datos (variable "query_select_all").

 

 

Insertar datos en la base de datos

Añada una nueva fila en su tabla mediante el comando SQL "INSERT INTO".

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()

query_insert_into =    """INSERT INTO mytable
                          (id, prename, surname, countrycode, birthday, expenses) 
                           VALUES 
                          (1,'Max','Johnson','43','12-12-1990',5045.20)"""

count = cursor.execute(query_insert_into)
sqliteCon.commit()
cursor.close()

 

El método execute() ejecuta el comando SQL y devuelve el número de filas insertadas.
Se puede obtener el número de filas comprometidas (insertadas, eliminadas o modificadas) a través de este método "rowcount":

cursor.rowcount

 

 

Borrar datos de la base de datos

Esto se hace de forma similar a lo que se ha hecho en el capítulo ("Insertar datos en la base de datos") anterior.
También se pueden pasar argumentos (parámetros), a través del método execute(). Estos parámetros almacenan sus valores para el comando SQL. La columna de la tabla y el valor (marcado en el comando SQL por el signo de interrogación "?") se añade entre paréntesis propios en el método execute().

sqliteCon = sqlite3.connect('Datebase_python.db')
cursor = sqliteCon.cursor()

query_delete_row = "DELETE FROM mytable WHERE id = ?"
cursor.execute(query_delete_row, (id, 5))
sqliteCon.commit()

cursor.close()
sqliteCon.close()

 

Si desea actualizar una fila, utilice el comando SQL "UPDATE" en su lugar. Ejemplo (un extracto):

query_update_row = "UPDATE mytable SET name=:namevalue WHERE id = :idnumber"
cursor.execute(query_update_row, {"Peter": namevalue, "5": idnumber})
sqliteCon.commit()

En este ejemplo los parámetros (argumentos) se pasan a través de los marcadores de posición (namevalue y idnumber).

Esto fue una introducción a la programación de bases de datos SQLite en Python. Si quieres saber más sobre este tema, consulta los siguientes enlaces.

 

Más información sobre SQLite3 / Documentación de SQLite3:
https://docs.python.org/3/library/sqlite3.html

Navegador de Bases de Datos - Herramienta GUI para ver y gestionar la base de datos de SQLite:
https://sqlitebrowser.org/dl/

Usamos cookies en nuestro sitio web. Algunas de ellas son esenciales para el funcionamiento del sitio, mientras que otras nos ayudan a mejorar el sitio web y también la experiencia del usuario (cookies de rastreo). Puedes decidir por ti mismo si quieres permitir el uso de las cookies. Ten en cuenta que si las rechazas, puede que no puedas usar todas las funcionalidades del sitio web.