Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment encoder (utf8mb4) en Python

J'ai moi-même eu du mal à échanger correctement la gamme complète de caractères UTF-8 entre Python et MySQL pour le bien d'Emoji et d'autres caractères au-delà du point de code U+FFFF.

Pour être sûr que tout fonctionnait bien, j'ai dû faire ce qui suit :

  1. assurez-vous que utf8mb4 a été utilisé pour CHAR , VARCHAR , et TEXT colonnes dans MySQL
  2. appliquer UTF-8 en Python
  3. appliquer l'UTF-8 à utiliser entre Python et MySQL

Pour appliquer UTF-8 en Python, ajoutez la ligne suivante comme première ou deuxième ligne de votre script Python :

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

Pour appliquer UTF-8 entre Python et MySQL, configurez la connexion MySQL comme suit :

# Connect to mysql.
dbc = MySQLdb.connect(host='###', user='###', passwd='###', db='###', use_unicode=True)

# Create a cursor.
cursor = dbc.cursor()

# Enforce UTF-8 for the connection.
cursor.execute('SET NAMES utf8mb4')
cursor.execute("SET CHARACTER SET utf8mb4")
cursor.execute("SET character_set_connection=utf8mb4")

# Do database stuff.

# Commit data.
dbc.commit()

# Close cursor and connection.
cursor.close()
dbc.close()

De cette façon, vous n'avez pas besoin d'utiliser des fonctions telles que encode et utf8_encode .