Foros del Web » Programando para Internet » Python »

Cambiar codificación en Python 2.5 para leer un campo de una BD de Access.

Estas en el tema de Cambiar codificación en Python 2.5 para leer un campo de una BD de Access. en el foro de Python en Foros del Web. Hola, tengo el siguiente problema: tengo que migrar unos datos de una bd hecha en access a otra hecha con MySQL. El problema viene cuando ...
  #1 (permalink)  
Antiguo 15/02/2010, 03:21
 
Fecha de Ingreso: febrero-2010
Mensajes: 1
Antigüedad: 14 años, 9 meses
Puntos: 0
Cambiar codificación en Python 2.5 para leer un campo de una BD de Access.

Hola, tengo el siguiente problema: tengo que migrar unos datos de una bd hecha en access a otra hecha con MySQL.

El problema viene cuando intento leer un campo de la BD de access que contiene carácteres tipo 'º' y 'ª' y demás cosas parecidas.

Este es el código que uso:

rs=Dispatch(r'ADODB.Recordset')
rs.ActiveConnection=conn
rs.CursorLocation = 3
rs.Open("SELECT * FROM Modelos")


while not rs.EOF:


dato=rs.fields("Notas")

print dato

rs.MoveNext()


las líneas de la BD que no contienen carácteres especiales me las lee bien, pero las otras me da este error:

Traceback (most recent call last):
File "C:\Python25\Lib\site-packages\pythonwin\pywin\framework\scriptutils.py" , line 307, in RunScript
debugger.run(codeObject, __main__.__dict__, start_stepping=0)
File "C:\Python25\Lib\site-packages\pythonwin\pywin\debugger\__init__.py", line 60, in run
_GetCurrentDebugger().run(cmd, globals,locals, start_stepping)
File "C:\Python25\Lib\site-packages\pythonwin\pywin\debugger\debugger.py", line 631, in run
exec cmd in globals, locals
File "C:\Documents and Settings\Héctor\Escritorio\PruebaLeerYseparar.py", line 59, in <module>
print dato
File "C:\Python25\Lib\site-packages\win32com\client\dynamic.py", line 187, in __str__
return str(self.__call__())

UnicodeEncodeError: 'ascii' codec can't encode character u'\xaa' in position 20: ordinal not in range(128)


alguna solución? gracias de antemano
  #2 (permalink)  
Antiguo 15/02/2010, 10:53
Avatar de razpeitia
Moderador
 
Fecha de Ingreso: marzo-2005
Ubicación: Monterrey, México
Mensajes: 7.321
Antigüedad: 19 años, 8 meses
Puntos: 1360
Respuesta: Cambiar codificación en Python 2.5 para leer un campo de una BD de Access.

Haciendo un motón de conjeturas llegue a varias conclusiones.

1.- El encoding de tu base de datos en access es LATIN-1
2.- Por consecuente usas windows

prueba con:
Código Python:
Ver original
  1. dato=rs.fields("Notas")
  2. dato = unicode(dato, "LATIN-1")
  3. print dato

En caso de que no funcione, dime el tipo de data, esto lo logras haciendo con un "print type(dato)"

Etiquetas: access, bd, campos
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 16:01.