use the Unicode type instead of the String type, or alternatively set  
convert_unicode=True on your create_engine() call.

On Oct 26, 2008, at 2:23 PM, dunkelgruen wrote:

>
> Hello,
>
> i want to lern SQLAlchemy. But i have problems with encodings at a
> query.
> Here is a example (copy of the tutorial 0.5)...
>
> This is the example (is ready to use).
>
> #-------------------------------------------------------------------------------------
> #!/usr/bin/python
> #-*- coding: utf-8 -*-
>
> import sqlalchemy
> print "SQL Alchemy Version", sqlalchemy.__version__ # 0.5rc2
> from sqlalchemy import *
> from sqlalchemy.orm import *
> #from sqlalchemy.ext.declarative import declarative_base
> #from sqlalchemy import ForeignKey
> #from sqlalchemy.orm import relation, backref
>
> engine = create_engine('sqlite:///tutorial_sqlalchemy05.sqlite', echo
> = True,
>
> encoding="utf-8")
> Session = sessionmaker(bind=engine)
> session = Session()
> #------------------------------------------------------------------------------
> metadata = MetaData()
> #Base = declarative_base()
> #------------------------------------------------------------------------------
> users_table = Table('users', metadata,
>    Column('id', Integer, primary_key=True),
>    Column('name', String),
>    Column('fullname', String),
>    Column('password', String))
> #------------------------------------------------------------------------------
> class User(object):
>    def __init__(self, name, fullname, password):
>        self.name = name
>        self.fullname = fullname
>        self.password = password
>
>    def __repr__(self):
>        return "<User('%s','%s', '%s')>" % (self.name, self.fullname,
>                                            self.password)
> #------------------------------------------------------------------------------
> mapper(User, users_table)
> metadata.create_all(engine)
> #------------------------------------------------------------------------------
> ed_user = User('ed', 'Ed Jones', 'edspassword')
> umlaut_user = User('Mit', 'Umlaut', 'EinÖ')
> session.add(ed_user)
> session.add(umlaut_user)
> session.commit()
>
> query = session.query(User).filter(User.name == "Mit")
> print query.all()
> #------------------------------------------------------------------------------
> #------------------------------------------------------------------------------
> #------------------------------------------------------------------------------
>
> This is the Error Message:
>
> [...]
> 2008-10-26 08:01:59,624 INFO sqlalchemy.engine.base.Engine.0x...0ecL
> ['Mit']
> [Traceback (most recent call last):
> File "./EncodingFehler", line 46, in <module>
> print query.all()
> UnicodeEncodeError: 'ascii' codec can't encode character u'\xd6' in
> position 26: ordinal not in range(128)
>
>
> Insert "öüäßÄÖÜ" is no problem. In sqlite-gui it is correct.
> But no Query where one result has a German umlaut.
> I found this Problem in the Google Group.
> But no solution... it is a SQL Alchemy issue.
> Any workaround? If i delete
>
>    def __repr__(self):
>        return "<User('%s','%s', '%s')>" % (self.name, self.fullname,
>                                            self.password)
>
> i get back the refrences. But i can't use it...
>
> I use SQLA 0.5rc2, Python 2.5 and Ubuntu 8.04 LTS.
>
> Thanks.
>
> >


--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"sqlalchemy" group.
To post to this group, send email to [email protected]
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