Mysql
 sql >> Database >  >> RDS >> Mysql

Come codificare (utf8mb4) in Python

Ho lottato con me stesso con lo scambio corretto dell'intera gamma di caratteri UTF-8 tra Python e MySQL per il bene di Emoji e altri caratteri oltre il punto di codice U+FFFF.

Per essere sicuro che tutto funzionasse bene, dovevo fare quanto segue:

  1. assicurati utf8mb4 è stato utilizzato per CHAR , VARCHAR e TEXT colonne in MySQL
  2. applica UTF-8 in Python
  3. applica UTF-8 da utilizzare tra Python e MySQL

Per applicare UTF-8 in Python, aggiungi la seguente riga come prima o seconda riga del tuo script Python:

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

Per applicare UTF-8 tra Python e MySQL, imposta la connessione MySQL come segue:

# 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()

In questo modo, non è necessario utilizzare funzioni come encode e utf8_encode .