[DB-SIG] Passing Unicode strings to Database

Mikhail Astafiev Mikhail Astafiev <mikle@tomsk.net>
Wed, 6 Mar 2002 18:11:17 +0700


[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?

Thanks in advance,
Mick.