En esta ocasión haremos otra operación básica que se puede hacer sobre una tabla, ya hecha la alta en el post anterior, hoy nos daremos paso a hacer una consulta.

Retomaremos la base de datos conexion que hicimos en el post pasado, describamos la tabla desde MySQL para recordar como esta estructurada.

 

Iniciaremos haciendo un script que nos devuelve una consulta con todos los registros de la tabla alumno. Abrimos un nuevo scrip con el gedit, llamado consultaalumno.py :

$gedit consultaalumno.py &

Y escribimos dentro de él lo siguiente:

Explicando línea a línea:

 

import MySQLdb <– En esta línea importamos el módulo que nos permite hacer la conexión con MySQL.

 

db=MySQLdb.connect(host=”localhost”,user=”root”,passwd=”pasatiempos”,db=”conexion”) <– a una variable a la que bautizamos como db le asiganmos un método del módulo recién importado llamado “connect”, dentro los parámetros que usamos en el parentesis de dicho método colocaremos el nombre del equipo en donde esta el servidor MySQL, en este caso es localhost, pues estamos haciendo pruebas locales en nuestro propio equipo; colocamos el usuario y password de MySQL con el que nos queremos conectar y finalmente el nombre de la base de datos a la cual queremos tener acceso.

 

cursor=db.cursor() <– En la variable que recien creamos, que python la entiende como un objeto con métodos propios, se desprende un método llamado cursor, que es el que nos permite mantener apuntando siempre con la conexión a la base de datos elegida.

 

 

sql=”select * from alumno” <– En esta ocasión usaremos una variable que ser+a de tipo cadena y contendrá una cadena que será una instrucción MySQL, la instrucción “select” que es la que nos permite realizar la consulta.

 

cursor.execute(sql) <– Al método ejecute en esta ocasión le pasaremos como parámetro la variable que tiene la cadena de instrucción MySQL, aunque pudimos haber colocado sin más la instrucción MySQL entrecomillada dentro del paréntesis.

 

resultado=cursor.fetchall() <– el método fetchall contiene el volcado de todo el resultado de la consulta, se lo asignamos a una variable que se llama resultado. La variable resultado es de tipo matriz, aunque python es un lenguaje en donde no se necesita definir los tipos, el resultado de una consulta es una tabla, o un vector, dependiendo si son varios o un registro el resultado respectivamente, por lo que en el momento de hacer la asignación en este caso se construye una matriz que almacena datos heterogéneos.

 

print “Todos los alumnos” <– Simplemente un rótulo para mostrar antes del resultado.

 

for registro in resultado:

 

print “Nombre: “,registro[0],”Carrera: “,registro[1],”Grado: “,registro[2]

 

En python para hacer recorridos sobre una matriz que no es indexada numéricamente (0, 1, 2 ..n), si no que sus índices son cadenas como (“nombre”, “carrera”, “grado”) se usa un ciclo especial llamado for in; que inicia en la primera instancia de la matriz y en automática se detiene en la última instancia. Se creara una variable llamada registro que ira tomando cada una de las instancias de la matriz (resultado), es decir cada una de las filas.

 

Cómo bloque de instrucciones de este ciclo colocamos instrucciones para imprimir cada uno de los campos de cada instancia, en donde registro[0] contendrá el valor de la primera columna, registro[1] el valor de la segunda y así sucesivamente.

 

Ejecutemos el programa.

Comparemos con la misma consulta pero en MySQL:

El resultado es el mismo. =)

 

Ahora haremos una consulta selectiva, usando la clausula where de MySQL, el código no varía mucho, por lo que me limitare a explicar solo la líneas diferentes.

 

Abramos un nuevo script, ahora llamado consultaalumno2.py con el gedit.m y escribamos el siguiente código:

 

Hasta la 4 línea aparece la primera variación.

 

nombre=raw_input(“Escribe el nombre del alumno: “) <– En una variable llamada nombre, solicitamos al usuario que escriba el nombre del alumno que se va a buscar en la tabla, dicho nombre es guardado en la variable para usarlo posteriormente.

 

cursor.execute(“select * from alumno where nombre=%s”, nombre) <– En el método ejecute hay una diferencia con respecto al script anterior, ahora no hacemos una variable con una cadena de instrucción MySQL, sino que colocamos la instrucción MySQL entrecomillada dentro del paréntesis de execute, en la parte donde usamos el where nombre= usamos una máscara de variable como en el lenguaje C, en donde %s tomara el valor de una variable y pasara a formar parte de la cadena MySQL, cerrando las comillas y separado por una coma, colocamos el segundo parámetro que será la variable que almacena el nombre que queremos buscar.

 

 

 

 

El resto del código es lo mismo que en el anterior script con el ciclo for-in hacemos un recorrido sobre la matriz resultado e imprimimos cada columna de cada línea.

 

Espero que les sea de utilidad el Post.

 

Alimentate Sanamente, Haz ejercicio, Ve los partidos de los PUMAS.

 

SaluLINUX

Powered By DT Author Box

Written by chris

Conexión Python-MySQL Consulta.

3 thoughts on “Conexión Python-MySQL Consulta.

Leave a Reply

Follow

Get every new post delivered to your Inbox

Join other followers:

%d bloggers like this: