python 如何更改MySQL中的默认字符集?

zpqajqem  于 2023-01-04  发布在  Python
关注(0)|答案(1)|浏览(160)

我有一个python代码,它可以向运行在同一台机器上的MySQL数据库添加行。代码如下:

import mysql.connector

config = {
  'user': 'root',
  'password': 'a$$enjoyer',
  'host': 'localhost',
  'database': 'db',
  'raise_on_warnings': True
}

cnx = mysql.connector.connect(**config)
con = cnx.cursor()

现在,我有一个表,其中有一个MEDIUMTEXT列。问题是,每当我尝试插入文字与表情符号(是的,我需要他们),我得到的错误如下:1366 (HY000): Incorrect string value: '\xF0\x9F\xA5\xB6' for column 'epictext' at row 1 .
代码如下所示:

con.execute('INSERT INTO nice VALUES(%s,%s,%s)', [1,2,'🥶'])

我在这里发现了一些问题,解决了这个错误,例如this一,但他们没有解决这个问题。
奇怪的是,直接在MySql控制台运行INSERT INTO nice VALUES(1,2,'🥶');就可以了,而且在config中添加'collation': 'utf8mb4_general_ci'可以完全修复这个问题,但是当我上次尝试这样做时,这行代码是不必要的,如果可能的话,我真的希望避免使用它。

qxsslcnc

qxsslcnc1#

您需要在配置中指定"charset"和"collation",如下所示

config = {
  'user': 'root',
  'password': 'a$$enjoyer',
  'host': 'localhost',
  'database': 'db',
  'raise_on_warnings': True,
  'charset': 'utf8mb4',
  'collation': 'utf8mb4_unicode_ci'
}

cnx = mysql.connector.connect(**config)

希望能有所帮助

相关问题