字符串值不正确:'\ xF0 \ x9F \ x92 \ x8B \ xF0 \ x9F ...' - Python MySQLDB

时间:2017-10-10 08:59:28

标签: python mysql python-2.7 character-encoding mysql-python

我知道问题已被多次询问,我使用的是Python2.7 MySQLDB,你可以看到我已经完成了其他所有建议的答案:

  • 我已将数据库设置为Character Setutf8mb4 -- UTF-8 UnicodeCollationutf8mb4_general_ci
  • 包含COLLATE utf8mb4_unicode_ci
  • 的列
  • 包含DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci
  • 的表格
  • 连接MySQL后立即执行cursor.execute("SET NAMES utf8mb4;")

表结构。

CREATE TABLE `crawler` (

  `prod_content` text COLLATE utf8mb4_unicode_ci,

) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

我有一些看起来像เบอร์10!! ส้มสวย 01แฝดของ08 พร้อมส่ง!的数据我试图插入prod_content字段,但我收到错误

 Incorrect string value: '\xF0\x9F\x92\x8B\xF0\x9F...' for column 'prod_content'

Python: 2.7 MySQL: 5.7.19-0ubuntu0.16.04.1

编辑:

相关代码:

conn = MySQLdb.connect(user=DB_CREDS['user'], passwd=DB_CREDS['pass'], db=DB_CREDS['db'], host=DB_CREDS['host'], charset="utf8", use_unicode=True)
cursor = MySQLdb.cursors.DictCursor(conn) 
conn.autocommit(True)
conn.ping(True)
cursor.execute("SET NAMES utf8mb4;")

item = {"prod_content": "เบอร์10!! ส้มสวย 01แฝดของ08 พร้อมส่ง!", .... and several fields}

# insert data
placeholders = ', '.join(['%s'] * len(item))
columns = ', '.join(item.keys())
query = "INSERT INTO `" + spider.tbl_name + "` ( %s ) VALUES ( %s )" % (columns, placeholders)
values = item.values()
spider.cursor.execute(query, values)

0 个答案:

没有答案