Python: Trabajar con MySQL

En esta nueva entrega de artículos sobre Python le ha tocado el turno al MySQL.

Lo primero, si no tenemos instalado el soporte MySQL para Python debemos añadirlo al sistema. En Ubuntu podemos hacerlo así:

sudo apt-get install python-mysqldb

Existen dos formas de trabajar con MySQL, una es a través del módulo _mysql y la otra es a través de MySQLdb. _mysql es la implementación en Python de la API de C para MySQL. Se suele recomendar usar MySQLdb para trabajar, pero, cabezota que es uno yo suelo trabajar con _mysql :-P.

Para el ejemplo voy a suponer que existe una tabla llamada clientes que contiene los campos nombre y apellido.

#!/usr/bin/env python
 
import _mysql
 
# Datos para la conexión a MySQL
mysql_servidor = 'localhost'
mysql_usuario  = 'usuario'
mysql_clave    = 'clave'
mysql_bd       = 'base_datos'
 
conexion = _mysql.connect(host=mysql_servidor, user=mysql_usuario, passwd=mysql_clave, db=mysql_bd)
sql = "select * from clientes limit 10"
conexion.query(sql)
query = conexion.store_result()
if query.num_rows():
	print "Resultados\n=========="
	fila = query.fetch_row(how=1)
	while fila:
		print fila[0]["nombre"], " ", fila[0]["apellido"]
		fila = query.fetch_row(how=1)
conexion.close()

Aquí empezamos a usar conceptos algo más complicados como los diccionarios y las tuplas. Se recomienda buscar información al respecto (o igual me animo y escribo algún post sobre el tema).

Algunos comentarios:

1) fetch_row() tiene un parámetro opcional llamado how que indica cómo se devuelven los resultados. Si se especifica el valor ‘1’ los devolverá como un dicconario donde la clave es el nombre del campo.

2) Uso fila[0] ya que fetch_row devuelve cada fila como un diccionario dentro de una tupla.

3) store_result(). Si se usa esta función el servidor nos envía todos los datos “de golpe”, lo que puede ser un problema si hay muchos datos. Sin embargo podemos limitar el número de resultados usando LIMIT en la SQL. También podemos usar use_result() y el servidor nos devolvera las filas una a una. Esta opción tiene la pega de que consumimos más recursos del servidor.

3 thoughts on “Python: Trabajar con MySQL

  1. saludos, me parecio super interesante tu aporte, pero tiene un detalle, las cadenas de texto en python son con comillas dobles (“) y no con simples

  2. Realmente en Python pueden usarse tanto comillas dobles como simples, busca un poco en Google y lo verás ¿te ha dado algún problema al ejecutar el script?

  3. si me dio problemas, por eso es que te lo digo, hace tiempo que lo ocupe y me sirvió mucho así que muchas gracias, solo tenia ese pequeño detalle de las comillas

Deja un comentario

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.