sql >> Base de Datos >  >> RDS >> Mysql

Cómo codificar (utf8mb4) en Python

He tenido problemas con el intercambio correcto de la gama completa de caracteres UTF-8 entre Python y MySQL por Emoji y otros caracteres más allá del punto de código U+FFFF.

Para estar seguro de que todo funcionaba bien, tenía que hacer lo siguiente:

  1. asegúrese de utf8mb4 fue usado para CHAR , VARCHAR y TEXT columnas en MySQL
  2. hacer cumplir UTF-8 en Python
  3. hacer cumplir el uso de UTF-8 entre Python y MySQL

Para hacer cumplir UTF-8 en Python, agregue la siguiente línea como primera o segunda línea de su secuencia de comandos de Python:

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

Para hacer cumplir UTF-8 entre Python y MySQL, configure la conexión MySQL de la siguiente manera:

# 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 esta manera, no necesita usar funciones como encode y utf8_encode .