Latest posts on SQLObject ругается на символы кирилицы topichttps://python.su/forum/topic/2456/2008-08-12T11:42:46+03:00Общий :: Базы данных :: SQLObject ругается на символы кирилицы
2008-08-12T11:42:46+03:00pythonwin15823ответ запостил <a href="http://python.su/forum/viewtopic.php?pid=15822#p15822">здесь</a>
Общий :: Базы данных :: SQLObject ругается на символы кирилицы
2008-08-12T09:45:24+03:00qman15813<blockquote><em>Ferroman</em><br/>Использовать юникод.</blockquote>Переделал на такой код. <br/><div class="code"><pre># -*- coding: utf-8 -*-<br/>from sqlobject import *<br/>class Person(SQLObject):<br/> firstName = StringCol()<br/> middleInitial = StringCol(length=1, default=None)<br/> lastName = StringCol()<br/>sqlhub.processConnection = connectionForURI('mssql://sa:pass@127.0.0.1/sqlobject')<br/>fname = u"Вася"<br/>lname = u"Пупкин"<br/>cp_db = 'cp1251'<br/>p = Person(firstName=fname.encode(cp_db), lastName=lname.encode(cp_db))<br/>a = Person.get</pre></div>Данные содержащие символы кирилицы читаются в MS SQL Enterprise manager, но при работе программы появляется следующая ошибка:<br/><div class="code"><pre>Traceback (most recent call last):<br/> File "C:\Documents and Settings\user\workspace\1\src\pack\sqlobject_example.py", line 19, in <module><br/> lastName=lname.encode(cp_db))<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\declarative.py", line 89, in _wrapper<br/> return fn(self, *args, **kwargs)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 1183, in __init__<br/> self._create(id, **kw)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 1220, in _create<br/> self._SO_finishCreate(id)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 1247, in _SO_finishCreate<br/> self._init(id)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 924, in _init<br/> self._SO_selectInit(selectResults)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 1127, in _SO_selectInit<br/> colValue = col.to_python(colValue, self._SO_validatorState)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\col.py", line 513, in to_python<br/> return value.encode(dbEncoding)<br/>UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)</pre></div>Пробовал работать с MySQL (указав cp_db = ‘utf8’), но не смог добится правильного отображения кирилицы, а ошибка такая все равно появляется. <br/>Почему данные сохраняются, а ошибка возникает?<br/>Подскажите где сильно я ошибаюсь?<br/>P.S. может проще отказаться от SQLObject и перейти на SQLAlchemy? Кто что использует?
Общий :: Базы данных :: SQLObject ругается на символы кирилицы
2008-08-11T13:56:05+03:00Ferroman15791Использовать юникод.
Общий :: Базы данных :: SQLObject ругается на символы кирилицы
2008-08-11T12:51:44+03:00qman15790Есть код:<br/><div class="code"><pre># -*- coding: cp1251 -*-<br/>from sqlobject import *<br/>class Person(SQLObject):<br/> firstName = StringCol()<br/> middleInitial = StringCol(length=1, default=None)<br/> lastName = StringCol()<br/><br/>sqlhub.processConnection = connectionForURI('mssql://sa:passw@127.0.0.1/sqlobject')<br/>Person.createTable()<br/>p = Person(firstName="John", lastName="Doe")<br/>p = Person(firstName='Вася', lastName='Пупкин', middleInitial="Q")<br/>print "OK"</pre></div>запись с символами кирилицы успешно добавляется, но питон ругается на кодировку<br/><div class="code"><pre>Traceback (most recent call last):<br/> File "C:\Documents and Settings\user\workspace\1\src\pack\sqlobject_example.py", line 15, in <module><br/> p = Person(firstName='Вася', lastName='Пупкин', middleInitial="Q")<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\declarative.py", line 89, in _wrapper<br/> return fn(self, *args, **kwargs)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 1183, in __init__<br/> self._create(id, **kw)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 1220, in _create<br/> self._SO_finishCreate(id)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 1247, in _SO_finishCreate<br/> self._init(id)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 924, in _init<br/> self._SO_selectInit(selectResults)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\main.py", line 1127, in _SO_selectInit<br/> colValue = col.to_python(colValue, self._SO_validatorState)<br/> File "c:\python25\lib\site-packages\SQLObject-0.10.0-py2.5.egg\sqlobject\col.py", line 513, in to_python<br/> return value.encode(dbEncoding)<br/>UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-3: ordinal not in range(128)</pre></div>оставить как есть как то неправильно, как исправить?