SqlAlchemy & Postgres & TG2.

Luis Miguel Morillas morillas en gmail.com
Lun Mayo 5 08:00:28 CEST 2008


El día 5 de mayo de 2008 7:06, FERNANDO VILLARROEL
<fvillarroel en yahoo.com> escribió:
> Hola amigos,
>
>  Haber luego de varios dias dandole vuelta a un error
>  que obtengo al probar con TurboGears 2.0 :
>
>  UnicodeDecodeError: 'ascii' codec can't decode byte
>  0xc2 in position 47: ordinal not in range(128)
>

Tienes un problema con unicode. Python usa por defecto como encoding
ascii. La cadena que intentas usar tiene un carácter 0xc2 que no tiene
correspondencia en ese encoding y lanza la excepción. Dile al sistema
el encoding que estás usando cuando tiene que convertir a unicode. El
carácter que estás usando supongo que es una  por el mensaje que
muestras. Si usas unicode('cadena con Â', iso-8859-1) ya no dará el
error.
Aquí tienes una minimini guía, que al final tiene bibliografía
http://crysol.inf-cr.uclm.es/node/454


>  Me doy cuenta que el problema es el paso de atributos;
>  es decir al momento de efectuar un Insert desde un
>  formulario generado con Crud, el atributo Id que
>  corresponde precisamente a la primary_key de la tabla
>  no tiene valor; mirando el log de Postgres :
>
>  2008-05-05 00:48:22 CLT SENTENCIA:  INSERT INTO test
>  (id, nombre) VALUES (NULL, 'Carlos')
>
>  No se a que se debe ya que segui las instrucciones del
>  how to:
>
>  http://docs.turbogears.org/2.0/RoughDocs/BootStrap
>
>  Y ademas personalice el formulario respectivo para que
>  me solicite todos los datos; ya que leyendo adverti
>  que para los atributos que son primary_key en el
>  formulario quedan desabilitados por defecto. El asunto
>  que la tabla que estoy probando tiene dos atributos
>  (id, nombre) y en el formulario (new_form) me solicta
>  ambos datos. Pero id llega con valor NULL al motor.
>
>  Estoy mapeando el schema desde TG:
>
>  model/__init__py.
>
>  class Test(object):
>         pass
>
>
>  def init_model(engine):
>     """Call me before using any of the tables or
>  classes in the model."""
>
>     test = Table("test", metadata,
>         autoload=True, autoload_with=engine)
>     mapper(Test, test)
>
>
>
>  y en testform.py donde personalizo los datos a
>  solicitar para editar o insertar:
>
>  # Use dbsprockets makeForm
>  # http://code.google.com/p/dbsprockets/wiki/Primitives
>  from holamundo.model import DBSession, Test
>
>  from dbsprockets.primitives import makeForm
>  #new_form    = makeForm(Test, action="create",
>  omittedFields=['id'])
>  #edit_form    = makeForm(Test, action="update",
>  hiddenFields=['id'])
>
>  # Use Widget Form
>  from tw import forms
>  from tw.api import WidgetsList
>  from tw.forms import validators
>
>  class TestForm(forms.TableForm):
>     """ToscaWidgets form builder"""
>     class fields(WidgetsList):
>         """fields definitions. Replace to your
>  Fields"""
>         name="Test"
>         id = forms.TextField(label="Id", validator =
>  validators.Int(not_empty=True))
>         nombre = forms.TextField(label="Nombre",
>  validator = validators.UnicodeString(not_empty=True,
>  max=10))
>
>  new_form = TestForm("new_form", action="create")
>  edit_form = TestForm("edit_form", action="update")
>
>
>
>  Espero se entienda y alguien me de alguna idea.
>
>  Fernando.
>
>
>
>       ____________________________________________________________________________________
>  Be a better friend, newshound, and
>  know-it-all with Yahoo! Mobile.  Try it now.  http://mobile.yahoo.com/;_ylt=Ahu06i62sR8HDtDypao8Wcj9tAcJ
>  _______________________________________________
>  Lista de correo Python-es
>  http://listas.aditel.org/listinfo/python-es
>  FAQ: http://listas.aditel.org/faqpyes
>



-- 
Saludos,

--

Luis Miguel
_______________________________________________
Lista de correo Python-es 
http://listas.aditel.org/listinfo/python-es
FAQ: http://listas.aditel.org/faqpyes





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