3

代码如下:

连接服务器

MySQLdb.connect(host=ip, user='root', passwd='root',db='test',use_unicode=True,charset="utf8")
......
sql = "INSERT INTO ci(id,name) VALUES (493,u'Hello')"
print sql
ret = root.execute(sql)
.....

在服务器中,名称的类型为 VARCHAR(1000)。然后当我运行这个脚本时,它显示错误ProgrammingError: (1064, "You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near

但是当我将 u'Hello' 替换为 'Hello' 时,就可以了。所以也许它不支持unicode,然后我通过GUI手动将unicode字符串如“你好”插入到表中,也可以。我找不到是什么原因,谁能帮帮我

4

1 回答 1

3

MySQL 需要将字符串用直引号括起来:'你好',不允许使用'u' 符号。只需将整个字符串声明为 Unicode 并将其传递给 MySQL。在这里,我使用了一个准备好的语句:

sql = u"INSERT INTO ci(id,name) VALUES (493,'你好')"

不要忘记在连接到 MySQL 后运行“SET NAMES 'UTF-8'”(或 UTF-16 - 不知道您使用的是什么编码)以确保服务器将正确解释您发送的字符串它。

于 2013-09-13T08:10:03.530 回答