dont use the Unicode type if your MySQL client and/or server is
converting unicode for you.  "convert_unicode=False" has no effect on
the Unicode type.

also note theres a bug in MySQLDB related to this:

http://sourceforge.net/tracker/index.php?func=detail&aid=1592353&group_id=22307&atid=374932
http://www.sqlalchemy.org/trac/ticket/340


On Feb 1, 7:28 am, "Andrew Stromnov" <[EMAIL PROTECTED]> wrote:
> Python 2.4.4 (win32) + SQLAlchemy (r2285) + MySQLdb 1.2.1
>
> Code:
>
> from sqlalchemy import create_engine, BoundMetaData
> from sqlalchemy import Table, Column, Integer, String, SmallInteger,
> Unicode
>
> dburl1 = 'mysql://login:[EMAIL PROTECTED]/geobase?
> use_unicode=1&charset=cp1251&compress=1'
> engine1 = create_engine(dburl1, echo=False)
> metadata1 = BoundMetaData(engine1)
> cities = Table('cities', metadata1,
>     Column('id', Integer, autoincrement=True, primary_key=True),
>     Column('region_id', Integer, nullable=False, default=0),
>     Column('country_id', Integer, nullable=False, default=0),
>     Column('dialcode', String(7), nullable=False, default=''),
>     Column('name', String(64), nullable=False, default=''),
>     Column('mask', String(5), nullable=False, default=''),
>     Column('metro', SmallInteger, nullable=False, default='0') )
>
> dburl2 = 'mysql://login:[EMAIL PROTECTED]/geobase?
> use_unicode=1&charset=utf8'
> engine2 = create_engine(dburl2, echo=False, convert_unicode=False)
> metadata2 = BoundMetaData(engine2)
>
> places = Table('places', metadata2,
>     Column('id', Integer, autoincrement=True, primary_key=True),
>     Column('name', Unicode(64), nullable=False, default=''),
>     Column('parent', Integer, nullable=False, default=0),
>     Column('left', Integer, nullable=False, default=0),
>     Column('right', Integer, nullable=False, default=0),
>     Column('depth', Integer, nullable=False, default=0),
>     Column('type', Integer, nullable=False, default=0),
>     Column('dialcode', Unicode(7), nullable=True),
>     Column('mask', Unicode(5), nullable=True),
>     Column('code', Integer, nullable=True),
>     Column('domain', Unicode(5), nullable=True),
>     )
>
> # BLOCK
> cities = cities.select(limit=1).execute().fetchall()
> # BLOCK
>
> iv2 = u'\u0418\u0432\u0430\u043d\u043e\u0432\u0441\u043a\u0430\u044f
> \u043e\u0431\u043b.'
> nregion = places.select(places.c.name == iv2).execute()
>
> ----
>
> Traceback (most recent call last):
>   File "e.py", line 37, in ?
>     nregion = places.select(places.c.name == iv2).execute()
>   File "\Python24\Lib\site-packages\sqlalchemy\sql.py", line 476, in
> execute
>   File "\Python24\Lib\site-packages\sqlalchemy\sql.py", line 414, in
> execute
>   File "C:\Python24\lib\site-packages\sqlalchemy\engine\base.py", line
> 492, in execute_compiled
>     return connection.execute_compiled(compiled, *multiparams,
> **params)
>   File "C:\Python24\lib\site-packages\sqlalchemy\engine\base.py", line
> 303, in execute_compiled
>     proxy(str(compiled), parameters)
>   File "C:\Python24\lib\site-packages\sqlalchemy\engine\base.py", line
> 299, in proxy
>     self._execute_raw(statement, parameters, cursor=cursor,
> context=context)
>   File "C:\Python24\lib\site-packages\sqlalchemy\engine\base.py", line
> 337, in _execute_raw
>     self._execute(cursor, statement, parameters, context=context)
>   File "C:\Python24\lib\site-packages\sqlalchemy\engine\base.py", line
> 356, in _execute
>     raise exceptions.SQLError(statement, parameters, e)
> sqlalchemy.exceptions.SQLError: (UnicodeDecodeError) 'charmap' codec
> can't decode byte 0x98 in position 1: character maps to <undefined>
> 'SELECT places.id, places.name, places.parent, places.`left`,
> places.`right`, places.depth, places.type, places.dialcode,
> places.mask, places.code, places.domain \nFROM places \nWHERE
> places.name = %s' ['\xd0\x98\xd0\xb2\xd0\xb0\xd0\xbd\xd0\xbe
> \xd0\xb2\xd1\x81\xd0\xba\xd0\xb0\xd1\x8f \xd0\xbe\xd0\xb1\xd0\xbb.']


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to sqlalchemy@googlegroups.com
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at 
http://groups.google.com/group/sqlalchemy?hl=en
-~----------~----~----~----~------~----~------~--~---

Reply via email to