Dos consultas sobre MySQL
Javier Castrillo
riverplatense en gmail.com
Mie Mayo 2 18:02:30 CEST 2007
On 25/04/07, Gabriel Genellina <gagsl-py2 en yahoo.com.ar> wrote:
> Uydió... porqué es tan complicada la vida? :)
Aunque les parezca mentira me sigo peleando con este tema, me hice un
programita para aislarlo y ver qué onda
> Esto ya depende de como te llegan las cosas desde la base de datos, estas
> seguro de que vienen en utf8?
sgún phpmyadmin es utf-8-unicode-ci
> No tengo ni idea de qué querrán decir los de mysql con "utf8-spanish" (si
> es utf8 es unicode, y si es unicode no tiene sentido agregar spanish).
> Pero podrias poner: print type(q[0][0]), repr(q[0][0]) para ver si te
> llega string o unicode (en el registro famoso de Julián).
Fijate lo que me llega:
<type 'str'> 'Juli\xe1n'
Traceback (most recent call last):
File "/home/javier/python/wxpython/proyecto_sancabase/probador.py",
line 36, in OnAceptar
LblQ = wx.StaticText(self.panel, -1, "Nombre: %s" % q[0][0], (15, 90))
File "/usr/lib/python2.5/site-packages/wx-2.8-gtk2-unicode/wx/_controls.py",
line 1135, in __init__
_controls_.StaticText_swiginit(self,_controls_.new_StaticText(*args,
**kwargs))
File "encodings/utf_8.py", line 16, in decode
UnicodeDecodeError: 'utf8' codec can't decode bytes in position 12-13:
unexpected end of data
El código (pequeño) del probador es:
#!/usr/bin/python
# -*- coding: UTF8 -*-
import wx, sys, MySQLdb
class App(wx.App):
def OnInit(self):
frame = Frame("Probador", (300, 300), (250, 250))
frame.Show()
self.SetTopWindow(frame)
return True
#Clase Frame
class Frame(wx.Frame):
def __init__(self, title, pos, size):
wx.Frame.__init__(self, None, -1, title, pos, size)
self.panel = wx.Panel(self, -1)
LblProbando = wx.StaticText(self.panel , -1, 'Apellido: ', (15, 10))
self.TxClBusqueda = wx.TextCtrl(self.panel, -1, '', (15, 30), (125, -1))
self.TxClBusqueda.SetFocus()
self.db = MySQLdb.connect("localhost", "javier", "javier", "escuela")
boton = wx.Button(self.panel, wx.ID_OK, pos=(60, 150))
self.Bind(wx.EVT_BUTTON, self.OnAceptar, boton)
boton2 = wx.Button(self.panel, wx.ID_CANCEL, pos=(160, 150))
self.Bind(wx.EVT_BUTTON, self.OnBorrar, boton2)
def OnAceptar(self, event):
self.apellido = self.TxClBusqueda.GetValue()
c = self.db.cursor()
text = wx.StaticText(self.panel, -1, "%s" % self.apellido, (15, 70))
c.execute("""SELECT nombres FROM alumnos WHERE apellidos = %s""",
(self.apellido,))
q = c.fetchmany()
print type(q[0][0]), repr(q[0][0])
LblQ = wx.StaticText(self.panel, -1, "Nombre: %s" % q[0][0], (15, 90))
def OnBorrar(self, event):
self.TxClBusqueda.SetValue('')
LblQ = wx.StaticText(self.panel, -1, ' ', (15, 90))
text = wx.StaticText(self.panel, -1, ' ', (15, 70))
if __name__== '__main__':
app = App()
app.MainLoop()
Y (si les sirve) si desde una consola de mysql hago la consulta se ve:
mysql> SELECT apellidos, nombres FROM alumnos ORDER by apellidos asc;
+--------------------+----------------+
| apellidos | nombres |
+--------------------+----------------+
| Aicega | Magdalena |
| Carrizo | Juan Pablo |
| Casta�ares | Cecilia Malena |
| Castrillo | Francisco Enzo |
| Castrillo Avenda�o | Marcos Agust�n |
| Rossi | Juli�n |
+--------------------+----------------+
6 rows in set (0.01 sec)
En lugar de "Castañares" o "Agustín" por ejemplo, así dejamos
descansar a Julián :-)
desde ya muchísimas gracias por la ayuda!!!
Saludos
--
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
------------ 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