python3.4+tornado 查询 mysql 数据库出现错误,见下文

2014-05-26 22:04:22 +08:00
 dddd
pymysql.err.InternalError: (1267, "Illegal mix of collations (latin1_swedish_ci,IMPLICIT) and (utf8_general_ci,COERCIBLE) for operation '='")

如下语句创建表
create table members(name varchar(40) not null primary key, password varchar(40) not null, question varchar(100) not null, answer varchar(100) not null);

查询语句,name是中文字符
cursor.execute("SELECT name FROM members WHERE name='%s'" % name)

用pymysql-0.6.2连接数据库,后面的charset="utf8"没加出现另一个错误
self.db = pymysql.connect("localhost","root","DXC","demo",charset="utf8")
如下:
UnicodeEncodeError: 'latin-1' codec can't encode characters in position 37-40: ordinal not in range(256)

在华莽用户组也发了一遍https://groups.google.com/forum/#!topic/Python-cn/qVK95FAH0JI
4860 次点击
所在节点    Python
3 条回复
openroc
2014-05-26 22:29:42 +08:00
mysql create database时是用的utf8吗?
dddd
2014-05-26 23:36:34 +08:00
@openroc 解决了,mysql改为了utf8编码,但是又一个问题出现了,tornado的中文cookie乱码,怎么破???
cute
2014-05-27 10:09:28 +08:00
urlencode啊

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/114376

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX