Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak kodować (utf8mb4) w Pythonie

Zmagałem się z poprawną wymianą pełnego zakresu znaków UTF-8 między Pythonem a MySQL ze względu na Emoji i inne znaki spoza punktu kodowego U+FFFF.

Aby mieć pewność, że wszystko działa dobrze, musiałem wykonać następujące czynności:

  1. upewnij się, że utf8mb4 został użyty dla CHAR , VARCHAR i TEXT kolumny w MySQL
  2. wymuszaj UTF-8 w Pythonie
  3. wymuszaj używanie UTF-8 między Pythonem a MySQL

Aby wymusić UTF-8 w Pythonie, dodaj następujący wiersz jako pierwszy lub drugi wiersz skryptu Pythona:

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

Aby wymusić UTF-8 między Pythonem a MySQL, skonfiguruj połączenie MySQL w następujący sposób:

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

W ten sposób nie musisz używać funkcji takich jak encode i utf8_encode .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Jak zaktualizować stare hasła MySQL do nowego systemu haseł?

  2. Jak uruchomić, ponownie uruchomić, sprawdzić status i zatrzymać serwer MySQL

  3. Próbowano odczytać błąd końca strumienia w MySQL

  4. Czy to bezpieczny sposób na konwersję tabel MySQL z latin1 na utf-8?

  5. Tabele, których jedynym celem jest określenie podzbioru innej tabeli