我正试图将中文文本从python scrapy中删入MYSQL数据库,但似乎scrapy或MYSQL无法使用我当前的方法处理中文字符。
def insert_table(datas):
sql = "INSERT INTO %s (name, uses, time_capt) \
values('%s', '%s', NOW())" % (SQL_TABLE,
escape_string(datas['name']),
escape_string(datas['uses']),
)
if cursor.execute(sql):
print "Inserted"
else:
print "Something wrong"
添加到MYSQL数据库时,我一直收到此错误:
exceptions.UnicodeEncodeError: 'ascii' codec can't encode characters in position 1-7: ordinal not in range(128)
datas['name']
包含格式正确的中文字符。如果我在代码中打印变量,它就会正确显示出来。我已经尝试在将其添加到MYSQL之前添加.encode['utf8']
,这会导致错误消失,但这会使其在我的数据库中出现乱码乱码。我做错了吗?
编辑,这是我目前的代码:
15 def insert_table(datas):
16 sql = "INSERT INTO %s (name, uses, time_capt) \
17 values(%s, %s, NOW())", (SQL_TABLE,
18 escape_string(datas['name']),
19 escape_string(datas['uses']),
20 )
21 if cursor.execute(sql):
22 print "Inserted"
23 else:
24 print "Something wrong"
答案 0 :(得分:0)
当我在{" scrapy"中使用name = u"大学"
作为变量时,我遇到了类似的问题。项目。添加评论-*- coding: utf-8 -*-
后,错误消失了。