En este último “episodio”, nos avocaremos a un tema particular, el cual es prácticamente imposible evitar ser abarcado en el desarrollo de un sistema informático. Me refiero a la interacción con bases de datos.

¡Comencemos!

Trabajando con bases de datos MySQL en Python

No abordaremos aquí, conocimientos básicos sobre MySQL, uso, instalación ni configuración. Sin perjuicio de lo anterior, haré una breve introducción.

Structured Query Language (SQL)

SQL es el lenguaje de consulta estructurado utilizado para el acceso a bases de datos relacionales. Si bien SQL como lenguaje, posee ciertos estándares, el lenguaje de consulta en sí, varía para cada base de datos en particular, siendo el tratado en este ejemplo, el correspondiente a MySQL.

MySQL

MySQL es un sistema de gestión de bases de datos relacionales, libre y que puede ser instalado en múltiples plataformas.

Para seguir el capítulo de esta guía, será necesario instalar MySQL. Para ello los invito a quienes no posean MySQL instalado, que visiten el sitio de descargas de MySQL y la documentación de MySQL.

MySQLdb

MySQLdb es una interfaz para trabajar con bases de datos MySQL desde Python. El capítulo Nº7 de esta guía, se ha indicado como lectura recomendada, el Manual oficial de MySQLdb el cual sugiero que se lea tras finalizar este capítulo.

Instalación de MySQLdb

Para interactuar desde Python con MySQL a través de MySQLdb, es necesario instalar dicho módulo. El nombre del paquete es python-mysqldb (por si desean instalarlo desde los repositorios), o sino, pueden descargar un tarball desde http://sourceforge.net/projects/mysql-python/. Allí mismo, encontrarán el archivo README con toda la información para instalarlo.

Introducción a bases de datos con Python

En el caso particular de Python, el acceso a bases de datos se encuentra definido a modo de estándar en las especificaciones de DB-API (por curiosidad, puedes visitar Python Database API specification).

Esto significa, que para utilizar cualquier base de datos, siempre se deberán seguir los mismos pasos:

  1. Importar el módulo de conexión (en nuestro caso, utilizaremos MySQLdb)
    import MySQLdb
  2. Conectarse a la base de datos

    db_host = 'localhost'
    usuario = 'root'
    clave = 'clave'
    base_de_datos = 'mi_basededatos'

    db = MySQLdb.connect(host=db_host, user=usuario, passwd=clave,
    db=base_de_datos)

  3. Abrir un cursor
    cursor = db.cursor()
  4. Ejecutar una consulta

    mi_query = "SELECT campo FROM tabla WHERE campo='valor' ORDER BY campo"
    cursor.execute(mi_query)
  5. Si se está agregando, editando o eliminando un registro: hacer un commit a la base de datos
    db.commit()

  6. Si se están leyendo datos: obtener todos los registros hallados
    cursor.fetchall()

    u obtener solo el primero:
    cursor.fetchone()

  7. Cerrar el cursor abierto
    cursor.close()

Manos a la obra!

Hecha esta introducción, estamos en condiciones de arrancar.

Crear la base de datos que utilizaremos

Lo primero que debemos hacer, es crear una nueva base de datos (o utilizar una existente) y ejecutar el query (consulta) que creará la tabla que utilizaremos.

Para ello, abriendo una terminal accedes a MySQL escribiendo:

mysql -u nombre_de_usuario_de_mysql -p contraseña_de_mysql

Lógicamente, modificarás nombre_de_usuario_de_mysql por tu nombre de usuario y contraseña_de_mysql por tu clave. Al pulsar la tecla “enter”, verás mysql>

Una vez allí, si deseas crear una nueva base de datos, escribe:

create database nombre_de_la_nueva_base_de_datos;

Luego, indicamos a MySQL la base de datos que utilizaremos, escribiendo:

use nombre_de_tu_base_de_datos;

Habiendo indicado la base de datos a utilizar, ya estás en condiciones de ejecutar la consulta que creará la tabla. Para ejecutar la consulta, copia el siguiente query y luego pulsa la tecla enter:

CREATE TABLE IF NOT EXISTS paises (
id INT(11) NOT NULL AUTO_INCREMENT PRIMARY KEY,
pais VARCHAR(125) NOT NULL,
abbr CHAR(2) NOT NULL
) ENGINE=InnoDB;

Descargar archivos

El ejemplo de este capítulo, corresponde a un ABM de países con arquitectura MVC (modelo-vista-controlador). El mismo, cuenta con los siguientes archivos:

Para ejecutar este ejemplo, llamar a pais_controller.py:
python pais_controller.py

Como podrán observar, este controlador es quien recibe las peticiones que hagamos, encargándose de realizar los cambios necesarios al modelo (la clase Pais), llamar a este modelo, y luego, enviar los datos necesarios a la vista, para que ésta, finalmente, sea quien nos muestre esos datos en pantalla.

Saber más sobre el patrón arquitectónico MVC

Balance final de la guía

Así es que llegamos al final de esta guía.

Queda muchísimo por aprender y sobre todo, son abundantes los consejos que podríamos tomar para crecer profesionalmente. Creo, que quienes hayan seguido la guía paso a paso y participado activa o pasivamente de los comentarios de cada capítulo, habrán sabido comprender las bases necesarias para no ser “un programador más”.

Como docente, me llevo conmigo la satisfacción de, una vez más, no haberme reservado lo que aprendí a lo largo de mi carrera, como un secreto bajo llave, sino, el haberlo compartido con el solo objeto de ser aprovechado por quienes se sintiesen interesados, curiosos, motivados, etc.

Como redactora de esta guía, quedan almacenadas en mi memoria, un cúmulo de experiencias aprovechables, producto de la interacción humana en un medio de comunicación tan particular como lo es Internet.

Y como persona, me llevo la indudable realidad sobre una educación general en decadencia, que quisiera haber evitado conocer, pero que al mismo tiempo, me abre los ojos a un camino alternativo para cumplir mis objetivos.

Finalmente, tras todo el balance anterior y, dadas las fechas que se aproximan, quisiera enviar un gran saludo a judíos y cristianos, ya que esta noche (25 de Kislev) comienza חֲנֻכָּה, pues les deseo ¡MUY FELIZ JANUCÁ! a toda la cole y para este finde del 24 y 25 de diciembre, ¡MUY FELIZ NAVIDAD! a todos los cristianos!

Y por supuesto, para todos, un ¡EXCELENTE 2012!