Maneja tu base de datos SQL con Python

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.

Previous Truco: Cómo montar una Unidad Virtual en Windows 8
Next Mejora tu seguridad con Lastpass, 1Password o KeePass

About author

Rafa M.
Rafa M. 51 posts

Ingeniero de Telecomunicación, apasionado de la Seguridad Informática. Le gusta estar al día en todo lo relacionado con Internet y las nuevas tecnologías.

You might also like

Desarrollo 1Comments

Cómo detectar un dispositivo móvil en Django con Mobi

Cuando estamos programando una aplicación web es probable que necesitemos distinguir si el usuario se conecta desde su dispositivo móvil (tablet, smartphone, iphone, etc) o desde un PC. En función

Cultura 1Comments

DrupalCamp Spain 2014

Este fín de semana la capital del Turia ha acogido a la DrupalCamp Spain 2014, a la cual fuí en calidad de ponente. No puedo dejar pasar la oportunidad de

Tecnologia & Ciencia 14 Comentarios

El problema de desplegar redes ad hoc en Android OS: ¿rootear el dispositivo?

El estándar Wi-Fi (IEEE 802.11) puede operar básicamente en dos modos: Infraestructura (o “managed”), en el que los clientes se conectan a un punto de acceso o router. Ad-hoc, también llamado

3 Comentarios

  1. edudi
    septiembre 27, 20:20 Reply

    Buenas, estaba buscando esto que comentas, pero un poco distinto:

    Se programar en BASH y hago muchas maravillas pero estoy empezando en django y python.

    Estoy buscando algo que haciendo un bucle mire toda una base de datos y revise los valores, …si se cumple la condición lanza un script en 2º plano, ….y así con todas las filas, ….el ejemplo es este:

    Sólo necesito que en una base de datos hayan 3 filas, cada una con un valor, …y que revise esas 3 filas de la base de datos (que ya será más grande), …un usuario con 500, otro con 600 y otro con 700, …

    Y el valor para comparar lo mira en un TXT, …imaginando 550, ….si es menor de 550 lanza un comando en 2º plano que corresponde a la fila que tiene el valor 500.

    Parto de 0 en django y python, y quisiera tener una base.

    Un saludo y muchas gracias

    • Angel
      octubre 08, 11:18 Reply

      file = open(“archivo.txt”, “r”)
      valor = int(file.read())

      if (valor < 550): consulta = ...#consulta DB cuyas columna x < 550 for linea in consulta: #operacion con cada linea que cumpla tu condicion

Deja un comentario