[DB-SIG] Passing Unicode strings to Database

M.-A. Lemburg mal at lemburg.com
Wed Mar 6 06:20:05 EST 2002


Mikhail Astafiev wrote:
> 
> [Env: Win2k, Python 1.5.2]
> 
> Hi people!
> 
> I have a string in Japanese encoded in UTF8. I need to put it into
> database in Unicode form.
> 
> import dbi, odbc
> o=odbc.odbc(self.ODBC_name+"/"+self.ODBC_sql_username+"/"+self.ODBC_sql_password)
> c=o.cursor()
> runes = UTF82Runes(string.replace(self.pr_table[row]["description"],"'","''"))
> operator="""INSERT INTO %s VALUES('%s','%s');"""%(self.ODBC_table,
>    int(self.pr_table[row]["pr_no"]),
>    runes.tostring())
> c.execute(operator)    # update database
> 
> I'm getting the following error trace:
> 
> Traceback (innermost last):
>   File "C:\dev\Products\MRATES~1\server.py", line 34, in ?
>     PR.sync_all()
>   File "C:\dev\Products\MRATES~1\PRML\code\prml.py", line 2837, in sync_all
>     self.__sync_with_sql__(i)
>   File "C:\dev\Products\MRATES~1\PRML\code\prml.py", line 2797, in __sync_with_sql__
>     c.execute(operator)    # update database
> TypeError: argument 1: expected string without null bytes, string found
> 
> runes is array.array('H') containing Unicode string.
> 
> Database string field has "ntext" type. How can I overcome this
> problem?

Use mxODBC ? It has Unicode support builtin. Whether your ODBC driver
has is a different question, though.

-- 
Marc-Andre Lemburg
CEO eGenix.com Software GmbH
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Software:                   http://www.egenix.com/files/python/




More information about the Python-list mailing list