valores devueltos por python-mysql

Marcos Sánchez Provencio rapto en arrakis.es
Mie Jul 16 10:57:26 CEST 2003


Va entre líneas

amphora wrote:
> Muy buenas.
> 
> Tengo un problema con los valores devueltos por mysql. Tengo una tabla
> donde almaceno claves de acceso cifrados con crypt. Cuando trato de
> comparar el valor que me da el usuario con el que tengo en la base de
> datos, (por supuesto cifrado también)esta me devuelve una tupla tal que
> así:
> 
> ('pejMnPBXuMQJA',) y el valor que obtengo del usuario una vez cifrado es
> pejMnPBXuMQJA, con lo cual nunca son iguales, por las comillas simples.
> 
> ¿Se os ocurre alguna forma quitarle las comillas a la tupla?
> 
> El código que uso es este:
> 
> def checkpass (self, username,password):
>             "Check if the password matches the username"
>             self.cur.execute("SELECT clave FROM news WHERE
> usuario=%s",(username))

#Así tienes una lista de tuplas de cada resultado

>             rest=self.cur.fetchall()

#Así tienes la tupla de la primera fila devuelta
              rest=self.cur.fetchone()


>             password=crypt.crypt(password,password[:2])
>             if rest[0]==password:
>                   return 0
>             else:
>                   return -1
> 
> 

Lo que te devuelve fetchall es
  [('XXXXX',)]
Esto es una lista de tuplas. Con el primer [0] tomas el primer elemento 
de la lista. Ahora te hace falta otro [0] para tomar la primera columna, 
el primer elemento de la tupla.

Mi solución es ligeramente más simple, ya que esperas que sólo venga una 
  fila en el resultado, saco la fila con fetchone, que directamente 
devuelve una tupla con el resultado.

Haz la prueba pidiendo 'select * from news' y verás cómo fetchall te 
devuelve una lista de tuplas, donde cada elemento de la tupla es una 
columna del resultado. Si haces fetchone, te devolverá una sola tupla 
(cada vez que hagas fetchone). Las comillas son sólo el indicador de 
Python de que el valor es una cadena de texto, pero no se guardan en el 
valor de la variable.

Espero haberte aclarado algo... ;-)

------------ próxima parte ------------
_______________________________________________
Python-es mailing list
Python-es en aditel.org
http://listas.aditel.org/listinfo/python-es


Más información sobre la lista de distribución Python-es