Icono del sitio BorrowBits

Maneja tu base de datos SQL con Python

pythonUna de las principales herramientas en muchas empresas es el paquete Office de Microsoft. Este paquete aparte de incluir herramientas tan conocidas como Word o Excel, tienen un gestor de base de datos, también muy conocido, llamado Access. Permite la gestión y consulta de bases de datos mediante interfaz gráfica editable. En mi trabajo, por necesidades de proyecto, tengo que utilizar una base de datos en Access, tanto para añadir nuevos registros como para realizar consultas masivas en la misma.

Si estas familiarizado con las bases de datos y sentencias SQL, podrás acceder a esta base de datos sin necesidad de utilizar como IDE a Microsoft Access, ya que a través del estándar ODBC (Open DataBase Connectivity) podemos conectarnos, incluso desde otros sistemas operativos diferentes a Windows.

Gracias a ODBC, no importa qué motor de base de datos se utilice, ya que el sistema de acceso es independiente. Simplemente hay que indicar el controlador específico para la base de datos.

Para usar ODBC para conectarnos con nuestra base de datos desde Windows, Linux u otro sistema operativo, necesitamos el módulo de Python pyodbc.  Con él podremos añadir registros, realizar consultas, eliminar elementos, etc. Visita su página de descargas e instala aquella que concuerde con tu sistema operativo y con la arquitectura de tu equipo.

¿Cómo implementarlo en Python? Veamos un ejemplo con una base de datos de frutas:

#!/usr/bin/python
# -*- coding: cp1252 -*-

 # devuelve la ruta actual completa.
from os import getcwd

 # módulo para BBDD SQL
import pyodbc

 # Nombre del controlador de la base de datos Access.
DRIVER_NAME = "Microsoft Access Driver (*.mdb, *.accdb)"

 # Ruta completa de la base de datos.
DB_PATH = getcwd() + "\MiBDdeFrutas.accdb"

 # Establecer la conexión con BD.
conn = pyodbc.connect("Driver={%s};DBQ=%s;" % (DRIVER_NAME, DB_PATH))

 # Crear cursor para ejecutar consultas.
cursor = conn.cursor()

 # Agregar una fruta en nuestra base de datos:
nombre = "Platano"
calorias = "90"
origen = "Canarias"
color="amarillo"
# Ejecutar sentencia:
cursor.execute("INSERT INTO frutas (nombre, calorias, origen) VALUES (?, ?, ?)", nombre, calorias, origen)

# Guardar los cambios.
cursor.commit()

# Ejecutar consulta:
q = cursor.execute("SELECT * FROM frutas WHERE color = 'amarillo'")
rows = q.fetchall()

# Recorrer cada una de las filas e imprimirlas en pantalla.
if rows is not None:
   for row in rows:
       print "Nombre: %s | Calorias: %s" % (row.nombre, row.calorias)
else:
   print("No hay datos en la tabla.")

# Cerrar cursor
cursor.close()

# Cerrar conexion
conn.close()

Vemos que hay que especificar la ruta completa del archivo de la base de datos y el controlador correspondiente de nuestra base de datos Access. Creamos una conexión para gestionar la base de datos y un cursor para realizar las consultas necesarias a la misma. El cursor nos permite ejecutar las sentencias SQL que queramos.

Con cursor.execute(), por medio de signos de interrogación podemos pasar los valores correspondientes, evitando el formateo de cadenas y las vulnerabilidades en código, como por ejemplo SQLi.

Si necesitas hacer consultas masivas con un gran volumen de datos, hacer un script con Python puede facilitar mucho la tarea.

¿Cómo utilizas pyodbc? Cuéntanoslo.

Salir de la versión móvil