Manejo de bases de datos en Python
Spanish (Español) translation by Andrea Jiménez (you can also view the original English article)
En la era de la información en la que vivimos, podemos ver cuántos datos está intercambiando el mundo. Básicamente estamos creando, almacenando y recuperando datos, ¡extensamente! Debería haber una manera de manejar todo eso ya que no podría extenderse por todas partes sin ninguna administración, ¿verdad? Aquí viene el sistema de administración de bases de datos (DBMS).
El DBMS es un sistema de software que te permite crear, almacenar, modificar, recuperar y manejar los datos de una base de datos. Estos sistemas también varían en tamaño, que van desde sistemas pequeños que simplemente se ejecutan en tu computadora personal a los más grandes que se ejecutan en mainframes o unidades centrales.
Nuestro enfoque en este tutorial es en Python en lugar del diseño de base de datos. Sí, Python es maravillosamente capaz de interactuar con bases de datos, y esto es lo que te voy a mostrar en este tutorial.
¡Empecemos!
API de base de datos de Python
Como mencioné anteriormente, Python es capaz de interactuar con las bases de datos. Pero, ¿cómo puede hacer eso? Python utiliza lo que se llama la API de base de datos de Python para interactuar con bases de datos. Esta API nos permite programar diferentes sistemas de gestión de bases de datos (DBMS). Sin embargo, para esos DBMS diferentes, el proceso a seguir en el nivel de código es el mismo y es el siguiente:
- Establece una conexión con la base de datos de tu elección.
- Crea un cursor para comunicarte con los datos.
- Manipula los datos mediante SQL (interactuar).
- Indica a la conexión que aplique las manipulaciones SQL a los datos y que sean permanentes (validar), o dile que anule esas manipulaciones (revertir), devolviendo así los datos al estado antes de que ocurrieran las interacciones.
- Cierra la conexión a la base de datos.
SQLite
SQLite es un sistema de gestión de base de datos ligero basado en SQL con todas las funciones, autónomo (requiere poca compatibilidad con librerías externas), sin servidor (no requiere un servidor para ejecutar el motor de la base de datos y es una base de datos almacenada localmente), configuración cero (nada para instalar ni configurar), sistema de administración de bases de datos ligero basado en SQL (las consultas SQL se pueden ejecutar en tablas SQLite) y utiliza un archivo de datos para almacenar los datos.
Lo bueno de saber es que SQLite es utilizado por grandes empresas como Google, Apple, Microsoft, etc., lo que lo hace muy fiable. En este tutorial, vamos a usar SQLite para interactuar con la base de datos, y más específicamente trabajaremos con el módulo sqlite3 en Python.
Python y SQLite
Como mencioné anteriormente, trabajar con bases de datos implica seguir cinco pasos principales. Veamos esos pasos en acción.
1. Establecer una conexión con la base de datos de tu elección
Este paso se logra de la siguiente manera:
conn = sqlite3.connect('company.db')
Como mencioné en la documentación de sqlite3:
Para utilizar el módulo, primero debes crear un objeto Connection que represente la base de datos.
Observa en el código anterior que los datos se almacenarán en el archivo company.db.
2. Crear un cursor para comunicarse con los datos
El siguiente paso para trabajar con la base de datos es crear un cursor, como se indica a continuación:
curs = conn.cursor()
3. Manipular los datos mediante SQL
Después de conectarnos con la base de datos y crear un cursor, ya estamos listos para trabajar (interactuar) con los datos. En otras palabras, ahora podemos ejecutar comandos SQL en la base de datos company.db.
Supongamos que queremos crear un nueva tabla employee en nuestra bases de datos company. En este caso, necesitamos ejecutar un comando SQL. Para ello, utilizaremos el método execute() del módulo sqlite3. Por lo tanto, la instrucción de Python se verá así:
curs.execute('create table employee(name, age)')
Esta instrucción ejecutará un comando SQL que creará una tabla denominada employee, con dos columnas (campos) name y age.
Ahora podemos ejecutar un nuevo comando SQL, el cual insertará datos en la tabla, como se indica a continuación:
curs.execute("insert into employee values ('Ali', 28)")
También puedes insertar varios valores a la vez, como se indica a continuación:
values = [('Brad',54), ('Ross', 34), ('Muhammad', 28), ('Bilal', 44)]
En este caso, en lugar de utilizar el método execute(), usaremos el método executemany() para ejecutar los valores múltiples anteriores.
curs.executemany('insert into employee values(?,?)', values)
4. Validar los cambios
En este paso, nos gustaría aplicar (validar) los cambios que hemos realizado en el paso anterior. Esto se hace de la siguiente manera:
conn.commit()
5. Cerrar la conexión a la base de datos
Después de realizar nuestras manipulaciones y validar los cambios, el último paso será cerrar la conexión:
conn.close()
Vamos juntar todos los pasos en un solo script. El programa se verá de la siguiente manera (ten en cuenta que primero tenemos que importar el módulo sqlite3):
1 |
import sqlite3 |
2 |
conn = sqlite3.connect('company.db') |
3 |
curs = conn.cursor() |
4 |
curs.execute('create table employee (name, age)') |
5 |
curs.execute("insert into employee values ('Ali', 28)") |
6 |
values = [('Brad',54), ('Ross', 34), ('Muhammad', 28), ('Bilal', 44)] |
7 |
curs.executemany('insert into employee values(?,?)', values) |
8 |
conn.commit() |
9 |
conn.close() |
Si ejecutas el script, debes obtener un archivo denominado company.db en el directorio actual. Descarga este archivo ya que lo usaremos en el siguiente paso.
Vamos a examinar la base de datos
Después de haber creado una base de datos, una tabla y agregar algunos datos, veamos lo que hay dentro de company.db (el archivo que descargaste en la sección anterior). Para ello, vamos a utilizar una buena herramienta: DB Browser para SQLite. Avanza y descarga la herramienta en tu máquina. Una vez que abras el programa, se debe abrir una pantalla que se ve así:



Abre la base de datos con el botón Abrir base de datos que se encuentra en la parte superior, y debes obtener la estructura de la base de datos, como se indica a continuación:



Observa que ya tenemos la tabla employee en la lista, con dos campos name y age.
Para confirmar que nuestro código anterior funcionó y los datos se han agregado a la tabla, haz clic en la pestaña Examinar datos. Deberías ver algo así:



Entonces como puedes ver, se han creado una base de datos (company) y una tabla (employee) y los datos se han agregado correctamente a la tabla.
Este tutorial solo fue un resumen para empezar a trabajar con bases de datos en Python. Puedes obtener más información sobre el módulo sqlite3, donde podrás llevar a cabo diferentes operaciones de base de datos, como actualizar y consultar la base de datos. ¡Que te diviertas!



