添加到mysql表的Python编码错误

时间:2016-04-25 21:17:24

标签: python mysql python-2.7 encoding

我有以下架构:

CREATE TABLE language (
    language varchar(100) COLLATE utf8_bin NOT NULL,
    PRIMARY KEY (language)
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin;

我有以下代码将语言添加到数据库

self.cursor.execute("""INSERT IGNORE INTO language (language)  
                    VALUES (%s)""", 
                   (["PORTUGUÊS".encode('utf-8')]))
self.conn.commit()

表和db的编码为utf8_bin。问题是......如果这个词不存在,它会毫无困难地添加。如果存在,则给出以下错误;

UnicodeEncodeError: 'ascii' codec can't encode character u'\xca' in position 24: ordinal not in range(128)

一直在摸我的头几个小时

1 个答案:

答案 0 :(得分:0)

源代码中的第1行或第2行(在代码utf8编码中包含文字):

# -*- coding: utf-8 -*-

如果您需要更多Python / utf8提示: http://mysql.rjweb.org/doc.php/charcoll#python