Finalizando con Python y MySQL
Con el capítulo de hoy, llegamos al final de esta guía. Considero que hemos aprendido muchísimas cosas de gran importancia y que no solo se han enfocado en el dominio de un lenguaje (como Python, en este caso), sino que además, introdujeron buenas prácticas y conceptos de la programación en general, sus diversas técnicas y paradigmas.
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:
- Importar el módulo de conexión (en nuestro caso, utilizaremos MySQLdb)
import MySQLdb
- 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)
- Abrir un cursor
cursor = db.cursor()
- Ejecutar una consulta
mi_query = "SELECT campo FROM tabla WHERE campo='valor' ORDER BY campo"
cursor.execute(mi_query)
- Si se está agregando, editando o eliminando un registro: hacer un commit a la base de datos
db.commit()
- Si se están leyendo datos: obtener todos los registros hallados
cursor.fetchall()
u obtener solo el primero:
cursor.fetchone()
- 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:
- db_conn.py (Capa de abstracción para la base de datos)
- pais.py (Modelo)
- pais_view.py (Vista)
- pais_controller.py (Controlador)
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!
Eugenia como siempre, muchisimas gracias por el aporte por el tiempo dedicado a realizar la guia y resolver dudas, un abrazo y por cierto les recomiendo http://www.pythonchallenge.com/ es sumamnete adictivo, yo voy en el 4to y estoy picadisimo =), saludos
Excelente… simplemente genial… solo que deberian ofrecer una version imprimible de esta guia..
Es un buen fin de año finalizando con este curso
Felicidades Eugenia. Me encanto tu Curso.
Felicidades Eugenia por tu trabajo. Ahora espero ansioso la guía completa en PDF ^^
Ha sido muy excelente didactico trabajo que nos has brindado. Te agradezco por tu curso, seria interesante tener el curso dictado en PDF. Feliz Navidad y Propero Año 2012
Gracias Eugenia por esta iniciativa tan interesante que pusiste al alcance de todos.
Y para los panchos que quieren todo servido pidiendo ahora PDF, por qué no aportan y suman??
Copien el contenido y vayan armando el doc y luego lo pasan a PDF, con las herramientas que hay hoy en día para esta tarea, todavía tienen cara de exigir un PDF????
Panchitos, vayan a laburar, haraganes!!!!!!!!!!!!!!!!!!!!
Excelente material de estudio para aprende python, muchas gracias por el tiempo y dedicacion Un abrazo y Feliz año Nuevo
Esperemos que el siguiente año haya un buen material como este sobre Django seria genia
Gracias
Muy buen aporte, agradezco el desinterés de enseñar Python, ademas apoyo lo que dice Julio, seria genial una guía que trate sobre Django.
Feliz Navidad y que sea un venturoso Año Nuevo para todos.
Excelente guía, directa y al grano. Para aquellos que se estén aventurando a aprender Python + MySQL en Windows, les dejo este link con los instaladores de MySQLdb para Windows: http://segaco.com/mysqldb-mysql-para-python-para-windows/
Muy bueno Eugenia.
Sugerencias para otras guias
Python + Django
Python + atdd / tdd
Hola Eugenia, lástima que se terminó la guía que fue muy buena… —aplausos—, gracias por compartir tus conocimiento, y espero que hagas más guías como está. Felices Fiestas..!!!!
[…] Bahit para Maestros del Web.Agrega tu comentario | Enlace permanente al […]
[…] Bahit para Maestros del Web.Agrega tu comentario | Enlace permanente al […]
Me gusto el curso, felicidades y a seguir practicando python y demas lenguajes como voy programador :). Saludos y abrazos Eugenia.
Que tal Eugenia, gracias por aportar tus conocimientos, la verdad es que “devore” los scripts uno tras otro y me parece que ésta guía es sumamente valiosa – la guardaré tal cual en mi HD.
Gracias por éste curso tan nutriente. Los usaré en mis nuevos intentos de conquistar al mundo … 😛
Hola
sinceramente me interesa el curso, soy estudiante de ingeniería informática y quisiera saber si tienen algún sitio donde se puedan descargar o comprar este tipo de cursos…
gracias
wow, excelente curso ojala pronto haya uno de Ruby
Buen curso felicidades eugenia, eres la chica modelo un fuerte abrazo.
[…] FINALIZANDO CON PYTHON Y MYSQL http://www.maestrosdelweb.com/editorial/guia-python-bases-de-datos-mysql/ […]
Bueno, pues que lo he descargado y ya veré como me las arreglo…
Muchas gracias por facilitarlo. Un saludo, amigos.
Muchas gracias, es un gusto aprende Python.
Gracias Eugenia por esta guía, me gusto mucho la forma de resumir los temas, para poder tener un rapido vistaso del lenguaje, pero a la vez hacer referencia de los textos importantes a leer asi como los pequeños tips, que siempre son muy importantes.
Hola muy buenas!! espero que aun este alguien que me responda xD… me encanta python y desde que lo empece a usar (hace poco xD) cada vez me convenzo de usarlo para la mayoría de mis proyectos, pero hay algo que es justo lo que hablan en esta sección que me tiene un poco alejado y sin ganas de programar jeje.. y es que al intentar instalar esta libreria de MySQL para python me tira error: error: command ‘gcc-4.0’ failed with exit status 1 la verdad he buscado este error como loco y aun sigo sin resolverlo. algunas personas me han dicho que me esta pidiendo tener la version 4.0 del gcc pero tengo la version 4.0.1 así que no creo que sea el problema… la verdad este error me a pasado varias veces con otras instalaciones tambien pero esta es la que mas necesito =( …
Uso una macbook pro (Lion 10.7.4) espero que alguien pueda ayudarme.. he pensado en formatear e instalar todo de nuevo xD no se si sea una solución.
Saludos y gracias por esta guia!