Python + MySQL
Recientemente empece a trabajar en un proyecto en el que necesito conectar python con mysql. Sorprendentemente, no hay tanta documentacion como yo espere que hubiera, por lo cual quiero compartir un secretito que acabo de aprender.
Supongamos que tenemos la siguiente tabla:
+-------------+--------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------------+--------------+------+-----+---------+-------+ | id | varchar(20) | NO | PRI | | | | name | varchar(100) | NO | | | | | description | tinytext | NO | | | | | stock | int(11) | NO | MUL | | | | price | float | NO | | | | +-------------+--------------+------+-----+---------+-------+
Si queremos obtener un registro, el codigo “normal” es el siguiente
import MySQLdb
cnx = MySQLdb.connect('localhost', 'user', 'passwd', 'db')
c = cnx.cursor()
c.execute("SELECT * FROM inventory")
row = c.fetchone()
print repr(row)
Con lo cual obtendremos una tupla como la siguiente:
('5*99955*1', 'frijoles', 'frijoles bayos marca chonita', 50L, 10.55)
Aqui me nacio un problemilla. Yo estoy acostumbrado (mucho) a trabajar con PHP. PHP tiene la funcion mysql_fetch_array, el cual te devuelve un arreglo asociativo (o lo que los pythoneros llaman diccionario) en donde la llave es el nombre de la columna. Este es extremadamente util, sobretodo en tablas grandes, en donde es dificil recordar en que posicion del arreglo o tupla va cada elemento.
Como ya tenia una buena cantidad de codigo, queria encontrar una solucion elegante a mi problema, y si lo encontre
import MySQLdb
cnx = MySQLdb.connect('localhost', 'user', 'passwd', 'db')
c = cnx.cursor(MySQLdb.cursors.DictCursor)
c.execute("SELECT * FROM inventory")
row = c.fetchone()
print repr(row)
Con lo cual obtenemos una salida como la siguiente:
{'price': 10.55, 'description': 'frijoles bayos marca chonita', 'stock': 50L, 'id': '5*99955*1', 'name': 'frijoles'}
Lo cual ya es mucho mas manejable al momento de programar.
Mis 2 centavos…
About this entry
You’re currently reading “Python + MySQL,” an entry on Will Code for Food
- Published:
- 08.16.07 / 5pm
- Category:
- General
9 Comments
Jump to comment form | comments rss [?] | trackback uri [?]