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

Sådan koder du (utf8mb4) i Python

Jeg har kæmpet mig selv med den korrekte udveksling af hele rækken af ​​UTF-8-tegn mellem Python og MySQL af hensyn til Emoji og andre karakterer ud over U+FFFF-kodepunktet.

For at være sikker på, at alt fungerede fint, var jeg nødt til at gøre følgende:

  1. sørg for utf8mb4 blev brugt til CHAR , VARCHAR og TEXT kolonner i MySQL
  2. håndhæve UTF-8 i Python
  3. tving UTF-8 til brug mellem Python og MySQL

For at håndhæve UTF-8 i Python skal du tilføje følgende linje som første eller anden linje i dit Python-script:

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

For at gennemtvinge UTF-8 mellem Python og MySQL skal du konfigurere MySQL-forbindelsen som følger:

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

På denne måde behøver du ikke bruge funktioner såsom encode og utf8_encode .



  1. Django - OperationalError:(2006, 'MySQL-serveren er gået væk')

  2. Udfylder Many2many-feltet (odoo 8)

  3. Hvordan undgår man at SSIS FTP-opgave mislykkes, når der ikke er nogen filer at downloade?

  4. MySQL Job kunne ikke starte