MySQLdb里怎么insert一个带中文的内容?

MySQLdb里怎么insert一个带中文的内容?

如题。我试了多次。在网上也查了一个上午的资料。还是解决不了我这个问题。当我在sql语句里写有中文时,程序就出错呢。我文件用的是ansi,python的coding为gbk。我也试用过文件保存为utf-8,coding也改为utf-8,结果还是不行。请求帮助,感谢万分!

#coding: cp936
import MySQLdb
conn = MySQLdb.connect(host='localhost',user='root',passwd='123456',db='aa')
cursor = conn.cursor(MySQLdb.cursors.DictCursor)
sql = "update users set login=%s where id=1" %("你好")
cursor.execute(sql)

执行结果:
---------- Python ----------
Traceback (most recent call last):
  File "Noname5.py", line 6, in ?
    cursor.execute(sql)
  File "D:\Python\Lib\site-packages\MySQLdb\cursors.py", line 146, in execute
    query = query.encode(charset)
UnicodeDecodeError: 'ascii' codec can't decode byte 0xc4 in position 23: ordinal not in range(128)

输出完成 (耗时 0 秒) - 正常终止

请帮忙看看是什么问题吧。我的mysql是4.0.26的。

我是这样做的,没有问题。mysql 5.0 数据库字符集utf-8
#!/usr/bin/env python
# --*-- coding: utf-8 --*--
#练习MySQLdb连接mysql数据库。
#2006年9月21日  by zfv
import MySQLdb
import sys

try:   
     
    conn = MySQLdb.connect(host = "localhost", user = "root", passwd = "asdfs", db = "zfv")
   
except MySQLdb.Error, e:
    print "error %d: %s" % (e.args[0], e.args[1])
    sys.exit(1)
try:
    reload(sys)
    sys.setdefaultencoding('gb2312')

    cursor = conn.cursor()
   
    cursor.execute("drop table t")
    cursor.execute("create table t (id int(2),name varchar(20))")
   
    #conn.begin()
    cursor.execute('START TRANSACTION')
   
    cursor.execute('insert into t (id,name) values (34,%s)',('测试1',))
    cursor.execute('insert into t (id,name) values (33,%s)',('测试2',))
   
    cursor.execute('commit')
   
   
    cursor.execute("select id,name from t")
    data = cursor.fetchall()
    for i  in  data:
        id,name = i
        name = name.decode('utf-8')
   
        print data
        print id,name
     
except MySQLdb.Error, e:
         print "error %d: %s" % (e.args[0], e.args[1])
   
cursor.close()   
conn.close()

try this one :

[Copy to clipboard] [ - ]
CODE:
conn = MySQLdb.connect(db="my",user="root",
              passwd="ggg",use_unicode=1, charset='utf8')
cursor = conn.cursor()
query = "insert into ewyu(gg,ff) values(%s , %s)"

para = ("中国","北京")
cursor.execute(query,para)
conn.commit()
conn.close()

刚才又按"catcn "的方法写了一个。这样写可以正确写入中文呢。谢谢你们的帮助