[Tutor PyCZ] Problem s diakritikou

Richard Korinek richard.korinek na gmail.com
Čtvrtek Září 28 14:16:40 CEST 2006


Tak ja to zkusim - misto StringCol bych pouzil UnicodeCol. Tak jsem
resil podobny problem a nakonec jsem dospel k variante:

uri = "mysql://root@localhost/is_db"
connection = connectionForURI(uri, use_unicode = 1)
connection.debug = True
sqlhub.processConnection = connection

S timto se mi podarilo diakritiku rozchodit. Take jsem ale pracoval s
existujici databazi, ktera byla v iso8859-2, takze do iniciace
UnicodeCol jsem pridaval UnicodeCol(dbEncoding='iso-8859-2').

Nicmene v sqlObject a Pythonu jsem temer uplna lama a navic jsem s tim
experimentoval az pred nejakou dobou, takze pametove stopy uz
zeslably.

Richard Korinek
On 28/09/06, Matus Lucenic <matus.lucenic na gmail.com> wrote:
> Zdravim,
> potreboval by som poradit ohladne vkladania znakov s diakritikou do MySql cez SqlObject.
> Prikladik:
>
> # -*- coding: utf-8 -*-
>
> from sqlobject import *
>
> __connection__ = 'mysql://root:@localhost/test'
>
> class skTab(SQLObject):
>   meno = StringCol(length = 50, notNone = True)
>
> def zapis():
>     skTab.createTable(ifNotExists=True)
>     meno =u'skúška'
>
>     novyZaznam = skTab(meno=meno)
>
> zapis()
>
> vypise mi takuto chybovy hlasku:
> Traceback (most recent call last):
>   File "C:\dia.py", line 19, in ?
>     zapis()
>   File "C:\dia.py", line 17, in zapis
>     novyZaznam = skTab(meno=meno)
>   File "c:\python24\lib\site-packages\SQLObject-0.7rc1-py2.4.egg\sqlobject\main.
> py", line 1179, in __init__
>     self._create(id, **kw)
>   File "c:\python24\lib\site-packages\SQLObject-0.7rc1-py2.4.egg\sqlobject\main.
> py", line 1203, in _create
>     self.set(**kw)
>   File "c:\python24\lib\site-packages\SQLObject-0.7rc1-py2.4.egg\sqlobject\main.
> py", line 1064, in set
>     kw[name] = dbValue = from_python(value, self._SO_validatorState)
>   File "c:\python24\lib\site-packages\SQLObject-0.7rc1-py2.4.egg\sqlobject\col.p
> y", line 498, in from_python
>     return value.encode("ascii")
> UnicodeEncodeError: 'ascii' codec can't encode characters in position 2-3: ordin
> al not in range(128)
>
> Podla tejto hlasky to vyzera tak, ze SQLObject sa to snazi previest do ascii, ale nenasiel som sposob, ako to zrusit.
>
> Takisto pri vypise z db:
>
> def vypis():
>   vypisTab = skTab.select()
>   for riadokTab in vypisTab:
>     print riadokTab.meno
>
> vypis()
>
> mi to vrati haky-baky
>
> Uz som skusal vsetko mozne, vsetky mozne kodovania na strane pythonu aj db, skusal som to aj cez sqlite ale bezvysledne. Vie mi niekto poradit, v com moze byt problem.
>
> Dakujem
> ml
>
> _______________________________________________
> Tutor mailing list
> Tutor na py.cz
> http://www.py.cz/mailman/listinfo/tutor
>


Další informace o konferenci Tutor