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