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