Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie man (utf8mb4) in Python kodiert

Ich habe mich mit dem korrekten Austausch der gesamten Bandbreite an UTF-8-Zeichen zwischen Python und MySQL für Emoji und andere Zeichen jenseits des U+FFFF-Codepoints abmühen müssen.

Um sicherzugehen, dass alles gut funktionierte, musste ich Folgendes tun:

  1. stellen Sie sicher, dass utf8mb4 wurde für CHAR verwendet , VARCHAR , und TEXT Spalten in MySQL
  2. UTF-8 in Python erzwingen
  3. UTF-8 zur Verwendung zwischen Python und MySQL erzwingen

Um UTF-8 in Python zu erzwingen, fügen Sie die folgende Zeile als erste oder zweite Zeile Ihres Python-Skripts hinzu:

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

Um UTF-8 zwischen Python und MySQL zu erzwingen, richten Sie die MySQL-Verbindung wie folgt ein:

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

Auf diese Weise müssen Sie keine Funktionen wie encode verwenden und utf8_encode .