将Scrapy for Python项目添加到MYSQL时出现中文字符编码问题

时间:2013-12-07 15:45:27

标签: python mysql scrapy

我正试图将中文文本从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"                           

1 个答案:

答案 0 :(得分:0)

当我在{" scrapy"中使用name = u"大学"作为变量时,我遇到了类似的问题。项目。添加评论-*- coding: utf-8 -*-后,错误消失了。