Conceptos básicos para trabajar con la base de datos SQLite en Python
A la base de datos es uno de los archivos más útiles y populares para almacenar datos; se pueden utilizar para almacenar cualquier tipo de datos, incluidos texto, números, imágenes, datos binarios, archivos, etc. SQLite es un sistema de gestión de bases de datos relacionales basado en el lenguaje SQL. Es una biblioteca C y proporciona una API para trabajar con otros lenguajes de programación, incluido Python. No requiere que se ejecute un proceso de servidor separado según sea necesario en motores de bases de datos grandes como MySQL y Postgresql.
Es rápido y liviano, y toda la base de datos se almacena en un solo archivo de disco, lo que la hace portátil como CSV u otros archivos de almacenamiento de datos. Muchas aplicaciones utilizan SQLite para el almacenamiento interno de datos, principalmente en entornos como dispositivos móviles o pequeñas aplicaciones.
Base de datos SQLite para Python
Profundicemos en SQLite con el lenguaje de programación Python. En este tutorial, aprenderemos las ventajas de usar SQLite, los conceptos básicos del módulo python sqlite3, la creación de una tabla en una base de datos, la inserción de datos en la tabla, la consulta de datos de la tabla y la actualización de datos de la tabla.
Ventajas de usar SQLite
Las principales ventajas de usar SQLite son:
- SQLite no requiere un proceso o sistema de servidor separado para operar tantos motores de bases de datos grandes como se necesitan.
- SQLite viene con configuración cero, lo que significa que no se necesita configuración ni administración, lo que lo hace fácil de usar.
- Obtendremos un solo archivo de base de datos, y toda la información se almacena en un único archivo, lo que hace que el archivo sea portátil, a diferencia de otras bases de datos que escupen varios archivos.
- Viene preinstalado con la biblioteca estándar de Python para que pueda usarlo sin más instalación.
- SQLite está escrito en ANSI-C, lo que lo hace más rápido. También proporciona una API simple y fácil de usar con Python y muchos otros lenguajes de programación.
- SQLite está disponible en UNIX (Linux, Mac OS-X, Android, iOS) y Windows (Win32, WinCE, WinRT), por lo que no importa qué entorno estemos usando.
SQLite también se utiliza en Google Chrome para almacenar las cookies, los datos del usuario y otros datos importantes, incluidas las contraseñas de los usuarios. El sistema operativo Android también usa SQLite como su motor de base de datos principal para almacenar datos.
Módulo Python SQLite3
Para usar SQLite, necesitamos que Python esté instalado en nuestro sistema. Si aún no tiene Python instalado en su sistema, puede consultar nuestra guía paso a paso para instalar Python en Linux. Podríamos usar SQLite en Python usando el sqlite3 módulo disponible en la biblioteca estándar de Python. Gerhard Häring escribió el módulo sqlite3; proporciona una interfaz SQL compatible con DB-API 2.0. Viene preinstalado con la biblioteca estándar de Python, por lo que no tenemos que preocuparnos por ninguna instalación adicional.
Crear conexión a una base de datos
El primer paso al trabajar con SQLite en Python es establecer una conexión con una base de datos. Podemos hacer esto usando el método connect () de sqlite3 para configurar una conexión. Mira el siguiente código para ver un ejemplo. Simplemente puede copiar el código en un IDE o en un editor de texto y ejecutarlo. Si tiene un problema para elegir IDE para Python, puede consultar nuestra guía sobre cómo comparar el mejor IDE de Python. Se recomienda reescribir el código nuevamente en su IDE, y si desea copiar el código, verifique la sintaxis con el código presente aquí.
# importing the required modules
import sqlite3
# setting up the connection with database
conn = sqlite3.connect("sample.db")
print("Successfully connected to the database")
# closing the connection
conn.close()
El programa anterior creará una conexión con el archivo de base de datos SQLite "sample.db". Dará la siguiente salida en el terminal.
Veamos qué está sucediendo en el código anterior. En la primera línea, hemos importado el módulo sqlite3, que nos ayudará a trabajar con bases de datos SQLite en Python.
En la segunda línea, creamos una conexión con un archivo de base de datos SQLite llamado "sample.db" usando el conectar() función. La función connect () acepta la ruta al archivo de la base de datos como argumento. Si el archivo no existe en la ruta dada, entonces él mismo creará un nuevo archivo de base de datos con el nombre dado en esa ruta. La función connect () devolverá un objeto de base de datos en nuestro programa; almacenamos el objeto devuelto en una variable llamada conn.
La tercera línea de nuestro programa es una simple impresión declaración para mostrar un mensaje sobre una conexión exitosa. La última línea del programa rompe la conexión con la base de datos usando el cerrar() función del objeto de conexión.
En el ejemplo anterior, hemos creado la base de datos en el disco, pero también podemos crear una base de datos en la memoria RAM principal. La creación de una base de datos en la RAM hace que la ejecución de la base de datos sea más rápida de lo habitual. Aún así, la base de datos se creará temporalmente y, cuando se detenga la ejecución del programa, eliminará la base de datos de la memoria. Podemos crear una base de datos en la memoria proporcionando el nombre particular: memoria: como argumento a la conectar() función. Vea el programa siguiente como ilustración.
import sqlite3
conn = sqlite3.connect(":memory:")
print("n [+] Database has been successfully created in the Memory")
conn.close()
El programa anterior creará una base de datos en la RAM y podemos usarlo para realizar casi todas las tareas que podamos hacer con las bases de datos creadas en el disco. Este método es útil al crear una base de datos virtual temporal por alguna razón.
Cursor SQLite3
Acursor
el objeto es nuestra interfaz a la base de datos, que permite ejecutar cualquierSQL query
en la base de datos. Para ejecutar cualquier script SQL usando sqlite3, debemos crear un objeto de cursor. Para crear un objeto de cursor, necesitamos usar el cursor() método del conexión objeto. Podemos crear un objeto cursor de nuestra base de datos usando el siguiente código.
# importing the required modules
import sqlite3
# setting up the connection to the database
conn = sqlite3.connect("sample.db")
print("n [+] Successfully connected to the database")
cur = conn.cursor()
print("n [+] Cursor has been set up successfully")
cur.close()
# closing the connection
conn.close()
Cuando se ejecuta el programa, la salida se verá como se muestra en la siguiente imagen.
Veamos cómo funciona el código anterior. En el código anterior, el primero, segundo, tercero, es establecer una conexión con la base de datos, como se mostró anteriormente. En la cuarta línea, hemos utilizado el cursor() método del objeto de conexión para crear un objeto de cursor y almacenar el objeto de cursor devuelto en una variable llamada "cur". La quinta línea es un general impresión() declaración. En la sexta línea, destruimos el objeto cursor de la memoria usando el cerrar() método del objeto cursor.
Tipos de datos SQLite
Antes de continuar, comprendamos primero los tipos de datos SQLite. El motor de base de datos SQLite tiene varias clases de almacenamiento para almacenar muchos tipos de datos, incluidos texto, datos binarios, números enteros, etc. Cada valor tiene uno de los siguientes tipos de datos.
Tipos de datos SQLite:
- NULL: Como implica, no contiene nada.
- INTEGER: Almacena un valor numérico como números y otros enteros.
- REAL: El valor incluye decimales.
- TEXTO: Es una cadena de texto.
- BLOB: Estos son los datos binarios y se utilizan para almacenar imágenes y archivos.
Comparación de tipos de datos SQLite y Python
Habrá muchas ocasiones en las que necesitemos usar tipos de datos de Python para almacenar algunos datos SQL y realizar algunas actividades. Para que esto suceda, necesitamos saber qué tipos de datos SQL se relacionan con qué tipos de datos de Python.
Los siguientes tipos de Python son algo similares a los tipos de datos de SQLite:
Tipo de Python | Tipo SQLite |
---|---|
None | NULL |
int | INTEGER |
float | REAL |
str | TEXT |
bytes | BLOB |
Creando una tabla usando SQLite
Para crear una tabla usando SQLite, necesitamos usar el CREAR MESA declaración de SQL en el ejecutar() método del objeto cursor. La sintaxis básica de la instrucción CREATE TABLE en SQL se muestra a continuación:
CREATE TABLE table_name(
column_name Data_type constraint,
...
...
...
column_name Data_type constraint
);
Para usar la declaración SQLite anterior en Python, necesitamos ejecutar el siguiente programa de ejemplo. Creará una tabla llamada empleado en nuestra base de datos.
import sqlite3
conn = sqlite3.connect("sample.db")
print("n [+] Successfully connected to the database")
cur = conn.cursor()
print("n [+] Cursor has been set up successfully")
table = cur.execute(""" CREATE TABLE employee(
id INT PRIMARY KEY,
name CHAR(25),
salary CHAR(25),
joining_date DATE
);
""")
print("n [+] The table has been created Successfully ")
cur.close()
conn.close()
En el programa anterior, creamos un empleado tabla con los atributos identificación, nombre, salario, y dia de ingreso. Esta tabla ahora se puede utilizar para almacenar datos o consultar datos según los requisitos. Verá la siguiente salida en el terminal.
En el código anterior, hemos utilizado el ejecutar() método del objeto cursor para ejecutar el comando SQL para crear una tabla con las columnas dadas.
Insertar datos en una tabla
Hemos creado una tabla en nuestra base de datos SQLite. Ahora insertemos algunos datos usando SQL. La sintaxis básica de la instrucción INSERT de SQL es:
INSERT INTO table_name (columns_name_1, columns_name_2,...) VALUES (columns_data_1, columns_data_1,...)
En la sintaxis anterior, el nombre de la tabla es el nombre de la tabla en la que queremos insertar nuestros datos. los column_name_1, column_name_2,... son el nombre de las columnas presentes en la tabla. los column_data_1, column_data_2,… son los datos que queremos insertar en las columnas dadas.
Veamos una demostración práctica para insertar datos en una tabla. Agregaremos algunos datos a nuestra tabla llamada empleado usando SQLite y Python. Ejecute el siguiente código para insertar algunos datos en la tabla.
import sqlite3
conn = sqlite3.connect("sample.db")
print("n [+] Successfully connected to the database")
cur = conn.cursor()
print("n [+] Cursor has been set up successfully")
cur.execute("INSERT INTO employee (id, name, salary, joining_date) VALUES (1001, 'David', 50000, '1-08-2019')")
cur.execute("INSERT INTO employee (id, name, salary, joining_date) VALUES (1002, 'Sam', 80000, '3-09-2020')")
cur.execute("INSERT INTO employee (id, name, salary, joining_date) VALUES (1003, 'Roshan', 90000, '8-08-2020')")
cur.execute("INSERT INTO employee (id, name, salary, joining_date) VALUES (1004, 'Kishan', 100000, '9-09-2020')")
cur.execute("INSERT INTO employee (id, name, salary, joining_date) VALUES (1005, 'Ankit', 111000, '10-05-2019')")
print("n [+] The Data has been inserted Successfully ")
cur.close()
conn.commit()
conn.close()
El código anterior insertará algunos datos en el empleado tabla que hemos creado anteriormente. Veamos qué está pasando en el código. Las primeras cinco líneas se utilizan para crear una conexión con la base de datos y configurar el cursor. En las líneas del seis al diez, tenemos que usar el comando INSERT de SQL para insertar datos en la tabla de empleados. Tenemos que usar el nombre de las columnas de la tabla de empleados en el primer paréntesis y los datos de las columnas en el segundo paréntesis. Solo necesitamos usar el cometer() método del objeto de conexión antes de desconectarse de la base de datos; de lo contrario, los cambios que hicimos no se guardarán en la base de datos.
Consultar datos de una tabla
Hemos aprendido cómo insertar datos en una base de datos SQLite, pero también necesitamos consultar datos de la base de datos para que los utilicen nuestro programa o los usuarios. Para consultar datos, podemos usar la instrucción SELECT del SQL bajo el método execute (). La sintaxis básica de la instrucción SELECT se muestra a continuación.
SELECT columns_names FROM table_name
los nombres_columnas en la sintaxis estará el nombre de las columnas que necesitamos consultar. Estas columnas deben estar presentes en la tabla cuyo nombre se da en lugar de nombre de la tabla. Ahora veamos cómo podemos usar esta sintaxis para consultar datos de nuestra tabla de empleados. Simplemente ejecute el siguiente código para ver una ilustración.
import sqlite3
conn = sqlite3.connect("sample.db")
print("n [+] Successfully connected to the database")
cur = conn.cursor()
print("n [+] Cursor has been set up successfully")
cur.execute("SELECT id,name FROM employee")
table = cur.fetchall()
for i in table:
print(i)
cur.close()
conn.commit()
conn.close()
La salida proporcionada por el programa anterior se muestra a continuación.
El programa anterior consultará la tabla de empleados para las columnas identificación y nombre. Podemos recopilar los datos que se han devuelto utilizando el fetchall () método del objeto cursor. Los datos devueltos son una lista de Python que contiene las filas que consultamos. Para mostrar filas individuales, tenemos que usar el bucle for de Python para iterar sobre la lista; puedes leer más sobre el bucle for de Python aquí. Ahora veamos algunas cosas útiles que podemos realizar con la instrucción SELECT.
Obtener todos los datos de una tabla
A veces existe la necesidad de recuperar todos los registros de una tabla de base de datos. Para obtener todos los registros usando la instrucción SELECT de SQL, debemos seguir la sintaxis básica que se indica a continuación:
SELECT * FROM table_name
los * El símbolo se usará para denotar todas las columnas, y al usar esto, podemos consultar todas las columnas de una tabla SQLite. Para obtener todos los registros del empleado de la tabla que hemos creado anteriormente, debemos ejecutar el siguiente código.
import sqlite3 conn = sqlite3.connect("sample.db") print("n [+] Successfully connected to the database") cur = conn.cursor() print("n [+] Cursor has been set up successfully") cur.execute("SELECT * FROM employee") rows = cur.fetchall() print("n [+] Querying the data n") for i in rows: print(i) cur.close() conn.commit() conn.close()
El código anterior mostrará todos los registros presentes en la tabla de empleados que hemos creado anteriormente. La salida del programa será algo como esto:
Consultar datos en orden específico
A veces necesitamos consultar datos de una tabla en un orden definido, como Ascendente o Descendente. Podemos usar la instrucción SELECT con la palabra clave ORDER BY para mostrar los datos en orden. La sintaxis básica de la palabra clave ORDER BY en la instrucción SELECT es:
SELECT columns_name FROM table_name ORDER BY columns_name
Veamos cómo podemos usar la palabra clave ORDER BY para mostrar los datos de la tabla de empleados ordenados por el nombre.
import sqlite3 conn = sqlite3.connect("sample.db") print("n [+] Successfully connected to the database") cur = conn.cursor() print("n [+] Cursor has been set up successfully") cur.execute("SELECT * FROM employee ORDER BY name") table = cur.fetchall() for i in table: print(i) cur.close() conn.commit() conn.close()
Puede ver la salida del código anterior, como se muestra a continuación.
Puede notar en la salida que los datos se han mostrado en el orden ascendente de la columna. nombre.
Actualizar registros en una tabla
Hay muchas situaciones en las que queremos actualizar la tabla de nuestras bases de datos. Por ejemplo, si usamos la base de datos para una solicitud escolar, entonces necesitaremos actualizar los datos si un estudiante se transfirió a una nueva ciudad. Podemos actualizar rápidamente una fila de cualquier tabla de nuestra base de datos usando el ACTUALIZAR declaración de SQL en el método execute (). Necesitaremos usar la cláusula WHERE de SQL como condición para seleccionar al empleado. La sintaxis básica del ACTUALIZAR declaración se muestra a continuación.
UPDATE table_name SET update_required WHERE Some_condition
Vea el siguiente ejemplo como una ilustración de la instrucción UPDATE.
import sqlite3 conn = sqlite3.connect("sample.db") print("n [+] Successfully connected to the database") cur = conn.cursor() print("n [+] Cursor has been set up successfully") print("n [+] Data Before Updaten") cur.execute("SELECT * FROM employee") before = cur.fetchall() for i in before: print(i) cur.execute("UPDATE employee SET name="Aditya" where name="Sam"") print("n [+] Data After Updaten") cur.execute("SELECT * FROM employee") after = cur.fetchall() for i in after: print(i) cur.close() conn.commit() conn.close()
El programa anterior actualizará la tabla de empleados. Reemplaza el nombre Sam con el nombre Aditya dondequiera que aparezca en la tabla. Vea la imagen de abajo para ver la salida del programa.
Conclusión
Esa es nuestra guía completa para realizar algunas tareas básicas relacionadas con la base de datos SQLite usando Python. En el próximo tutorial, veremos algunos usos más avanzados que deberían llevarlo al siguiente nivel de aprendizaje de la base de datos SQLite para Python. Estén atentos a FOSSLinux.
Deja una respuesta