sqlalchemy and Unicode strings: errormessage

Wolfgang Meiners WolfgangMeiners01 at web.de
Tue May 31 11:45:01 EDT 2011


Am 31.05.11 13:32, schrieb Daniel Kluev:
> On Tue, May 31, 2011 at 8:40 AM, Wolfgang Meiners
> <WolfgangMeiners01 at web.de> wrote:
>> metadata = MetaData('sqlite://')
>> a_table = Table('tf_lehrer', metadata,
>>    Column('id', Integer, primary_key=True),
>>    Column('Kuerzel', Text),
>>    Column('Name', Text))
> 
> Use UnicodeText instead of Text.
> 
>> A_record = A_class('BUM', 'Bäumer')
> 
> If this is python2.x, use u'Bäumer' instead.
> 
> 

Thank you Daniel.
So i came a little bit closer to the solution. Actually i dont write the
strings in a python program but i read them from a file, which is
utf8-encoded.

So i changed the lines

    for line in open(file,'r'):
        line = line.strip()

first to

    for line in open(file,'r'):
        line = unicode(line.strip())

and finally to

    for line in open(file,'r'):
        line = unicode(line.strip(),'utf8')

and now i get really utf8-strings. It does work but i dont know why it
works. For me it looks like i change an utf8-string to an utf8-string.

By the way: when i run a python program from eclipse, then

print sys.getdefaultencoding()

returns utf-8

and when i run the same python program from the command line, then

print sys.getdefaultencoding()

returns ascii

but my locale is set to
$ locale
LANG="de_DE.UTF-8"
LC_COLLATE="de_DE.UTF-8"
LC_CTYPE="de_DE.UTF-8"
LC_MESSAGES="de_DE.UTF-8"
LC_MONETARY="de_DE.UTF-8"
LC_NUMERIC="de_DE.UTF-8"
LC_TIME="de_DE.UTF-8"
LC_ALL="de_DE.UTF-8"

I think, utf8 is somewhat confusing in python - at least to me.

Wolfgang





More information about the Python-list mailing list