Psycopg and queries with UTF-8 data

Alban Hertroys alban at magproductions.nl
Thu Oct 14 06:00:45 EDT 2004


Another python/psycopg question, for which the solution is probably 
quite simple; I just don't know where to look.

I have a query that inserts data originating from an utf-8 encoded XML 
file. And guess what, it contains utf-8 encoded characters...
Now my problem is that psycopg will only accept queries of type str, so 
how do I get my utf-8 encoded data into the DB?

I can't do query.encode('ascii'), that would be similar to:
 >>> x = u'\xc8'
 >>> print x.encode('ascii')
Traceback (most recent call last):
   File "<stdin>", line 1, in ?
UnicodeEncodeError: 'ascii' codec can't encode character u'\xc8' in 
position 0: ordinal not in range(128)


I also tried setting PostgreSQL's client-encoding by executing "SET 
client_encoding TO 'utf-8'", but psycopg still only accepts str-type 
strings (which is not really surprising).


I assume that the solution will result in an ascii encoded query string, 
and that I then can use the QuotedString type to escape my strings 
(which is in my current situation not possible because that also only 
accepts str type strings and it contains utf-8 characters).

Regards,
Alban.



More information about the Python-list mailing list