usando PostgreSQL desde Python ambos en Win32

Joaquin Jose del Cerro Murciano jjdelcerromurciano en yahoo.es
Lun Jun 27 22:39:22 CEST 2005


El Lunes, 27 de Junio de 2005 22:13, jmoroz en uol.com.ar escribió:
> Hola! soy nuevo, me presento; mi nombre es Mario.
> Y ya estoy preguntando algunas cositas que no he encontrado en el
> archivo (tal vez no he buscado bien o lo suficiente...)
>
> A Saber ... uso Python 2.3 y Postgresql 8.0.3, ambos en platafomas
> Win32, especificamente WinXP HOME SP1.
>
> El tema es que estoy enviando unas query a la db, desde consola (shell
> python) y me esta debolviendo caracteres raros en lugar de las ñ y acentos.
> Este es el ejemplo:
>
>
> con=PgSQL.connect(host="localhost",database="prueba",user="mario",password=
>"x")
>
>  >>> cur=con.cursor()
>  >>> cur.execute("Select * from clientes")
>  >>> cur.fetchall()
>
> [[1, 'Mario Oroz                              '],
>   [2, 'Nu\xf1ez Ra\xfal                        '],
>   [3, 'Mar\xeda L\xf3pez L\xfardes             '],
>   [4, '\xe1\xe9\xed\xf3\xfa\xf1\xd1\xfc\xdc    '],
>   [5, '\xa4\xa5                                '],
>   [6, '\xa0\x82\xa1\xa2\xa3\xa4\xa5\x81\x9a    '],
>   [7, '\xa5\xa4\xa0                            '],
>   [8, '\xf1\xd1\xe1\xe9\xed\xf3\xfa            ']
> ]
>

Hola, 
antes de ponerte a elucubrar sobre el encoding, prueba a hacer algo como:

rs = cur.fetchall()
for n,s in rs:
 print n,s

Y a ver que te saca. En principio lo que estas viendo es un repr() de la lista 
que retorna el fetchall, y el repr interpreta como no imprimibles los 
caracteres como eñes y acentos, asi que te los escapa. No quiere decir  esto 
que tengas bien puesto el encoding, pero antes de pensar que esta mal, prueba 
sin el repr a ver que te sale.

Si a pesar de esto no te salen bien los caracteres, y antes de meterte con el 
encoding, ¿ Que shell de python gastas ?, ¿ el python.exe ? 
Si estas usando el python de linea de comandos y la base de datos la 
rellenastes desde aplicaciones windows, no creo que veas bien las eñes y 
acentos aunque toques el encoding. La consola del cmd no usa el mismo 
encoding que el Windows. Si es este tu caso, prueba a rodarlo desde un 
pythonwin a ver que ves.

Un saludo
Joaquin.

>
> 1_ La db de Postgresql la cree con encoding Latin1.
> 2_ El encoding que usa Python es "ascii", pues lo consulte usando el
> modulo sys.algo; dosde "algo" es el metodo o propiedad que me devolvio
> el string "ascii".
> 3_Supongo que el tema esta en este encoding, deberia cambiarlo a algo
> parecido al de la base pero como lo hago?
> 4_O sera que el problema viene por no comprender el uso de unicode?
>
> Desde ya Gracias
> Mario.
> _______________________________________________
> Python-es mailing list
> Python-es en aditel.org
> http://listas.aditel.org/listinfo/python-es

		
______________________________________________ 
Renovamos el Correo Yahoo! 
Nuevos servicios, más seguridad 
http://correo.yahoo.es




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