sql >> Databáze >  >> RDS >> Mysql

Jak kódovat (utf8mb4) v Pythonu

Bojoval jsem se správnou výměnou celého rozsahu znaků UTF-8 mezi Pythonem a MySQL kvůli Emoji a dalším znakům mimo kódový bod U+FFFF.

Abych se ujistil, že vše funguje správně, musel jsem udělat následující:

  1. ujistěte se, že utf8mb4 byl použit pro CHAR , VARCHAR a TEXT sloupce v MySQL
  2. vynutit UTF-8 v Pythonu
  3. vynutit použití UTF-8 mezi Pythonem a MySQL

Chcete-li v Pythonu vynutit UTF-8, přidejte následující řádek jako první nebo druhý řádek svého skriptu Python:

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

Chcete-li vynutit UTF-8 mezi Pythonem a MySQL, nastavte připojení MySQL následovně:

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

Tímto způsobem nemusíte používat funkce jako encode a utf8_encode .



  1. SQL, při kaskádě odstranění a při kaskádě aktualizace

  2. MariaDB JSON_ARRAY() Vysvětleno

  3. Spouštěč SQLite

  4. Nelze se připojit k serveru – chyba související se sítí nebo specifická pro instanci