Dos consultas sobre MySQL
Javier Castrillo
riverplatense en gmail.com
Lun Abr 23 15:37:40 CEST 2007
Hola a todos. Ahora que me puse en campaña para hacer algo en serio
estoy aprendiendo mucho y cada vez más entusiasmado. La verdad es que
Python es realmente divertido.
La molestia de hoy es la siguiente:
Mi aplicación hace abm de ciertos datos que están en una base MySQL.
Para conectarme uso MySQLdb que me permite conectarme sin problemas
desde la aplicación y hace la consulta de manera impecable salvo (si
no no sería divertido...) dos detalles a saber:
1) El resultado de un query me es devuelto como una tupla. Y no puedo
imprimir los elementos individuales por su índice. Es decir:
# Modificaciones de alumos
def OnModAlumnos(self, event):
self.dialogMA = wx.TextEntryDialog(None,
"Ingrese el Apellido del alumno", "Modificación de alumnos",
"", style=wx.OK|wx.CANCEL, pos=(300, 300))
if self.dialogMA.ShowModal() == wx.ID_OK:
self.apellido = self.dialogMA.GetValue()
self.dialogMA.Destroy()
self.MA = wx.Frame(self, -1, "Modificación de datos de
alumno", (250, 120), (420, 420))
panelMA = wx.Panel (self.MA, -1 )
LblApellMA = wx.StaticText(panelMA, -1, 'Alumnos que cumplen
el criterio de búsqueda:', (30, 20))
LblApellMA = wx.StaticText(panelMA, -1, "Apellido : % s" %
(self.apellido), (50, 50))
c = self.db.cursor() #la conexión ya está hecha antes
c.execute("""SELECT nombres, num_doc FROM alumnos WHERE
apellidos = %s""", (self.apellido,))
q = c.fetchmany()
LblQNMA = wx.StaticText(panelMA, -1, "Salida: % s" % (q), (50, 80))
self.MA.Show(True)
Si corro esto que puse precedentemente e ingreso el apellido en el
dialog, me da como valor de q ('nombreencontrado', 'dniencontrado'), o
sea que la consulta se hizo bien y halló los valores, pero si cambio
un par de líneas para dar formato correcto a la salida:
LblQNMA = wx.StaticText(panelMA, -1, "Nombre: % s" % (q[0]), (50, 80))
LblQDMA = wx.StaticText(panelMA, -1, "DNI: % s" % (q[1]), (50, 80))
self.MA.Show(True)
se cuelga y me sale en la consola el siguiente error:
File "/home/javier/python/wxpython/proyecto_sancabase/sancabase.py",
line 448, in OnModAlumnos
LblQNMA = wx.StaticText(panelMA, -1, "Nombre: % s" % (q[0]), (50, 80))
TypeError: not all arguments converted during string formatting
Probé sacar primero los índices y luego asignar la cadena, probé con
comillas, etc pero me sigue dando error. La verdad es que no puedo dar
con la solución y les pido un centro. Vamos al otro detalle que no me
cierra
2) Si el resultado de la query es una palabra con acento (digamos
'Julián') el resultado obtenido (al traerlo desde mysql) es
'Juli\xe1n'. Los StaticText que pongo yo salen bien (mi documento
tiene una línea al principio # -*- coding: UTF8 -*- ). La tabla de
MySQL la puse en UTF-8-spanish, UTF-8-spanish_2, UTF-8-bin,
UTF-8-unicode pero el error persiste. Tiene solución??
Muchas gracias a todos. Perdón por tantas molestias
--
Javier Castrillo
=========================================================
GNU / Linux User #242275
-------------------------------
pub 1024D/B482896F 2006-09-04
uid Javier Castrillo (El Palo) <riverplatense en gmail.com>
sub 2048g/52C99A4E 2006-09-04
Clave pública: carapa.com.ar/public.asc
http://carapa.com.ar
http://javiercastrillo.com.ar
http://riverplatense.googlepages.com
=========================================================
Usá Software Libre
Más información sobre la lista de distribución Python-es