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.

You might also like

Desarrollo 0 Comentarios

Crear una web desde cero: ¿quién lo haría en su sano juicio?

El otro día me topé con un artículo de Hackanoon que planteaba algunas ventajas de desarrollar una web desde cero. A la brava. A pelo. From scratch… El autor asegura

Desarrollo 4 Comentarios

Modelo Vista Controlador: Cómo implementarlo de forma sencilla y rápida con PHP

Ya hemos hablado en varias ocasiones del Modelo Vista Controlador. En PHP existen frameworks muy completos como Symfony o CakePHP; sin embargo, en este artículo vamos a describir una construcción

Desarrollo 0 Comentarios

12 trucos para diseñar el Formulario Perfecto

El formulario es un elemento fundamental para generar una buena conversión. De su buen diseño depende que un usuario no lo abandone antes de tiempo o que ni siquiera se

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