sql >> Database >  >> RDS >> Mysql

Hoe te coderen (utf8mb4) in Python

Ik heb mezelf geworsteld met de juiste uitwisseling van het volledige scala aan UTF-8-tekens tussen Python en MySQL omwille van Emoji en andere tekens buiten het U+FFFF-codepunt.

Om er zeker van te zijn dat alles goed werkte, moest ik het volgende doen:

  1. zorg ervoor dat utf8mb4 werd gebruikt voor CHAR , VARCHAR , en TEXT kolommen in MySQL
  2. dwing UTF-8 af in Python
  3. dwing UTF-8 af voor gebruik tussen Python en MySQL

Om UTF-8 in Python af te dwingen, voeg je de volgende regel toe als eerste of tweede regel van je Python-script:

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

Om UTF-8 tussen Python en MySQL af te dwingen, stelt u de MySQL-verbinding als volgt in:

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

Op deze manier hoeft u geen functies te gebruiken zoals encode en utf8_encode .



  1. Multi-tenant Django-applicaties:databaseverbinding per aanvraag wijzigen?

  2. Benoemde tijdzones instellen in MariaDB

  3. Prestatieproblemen:de eerste ontmoeting

  4. Werken met Java-gegevens in Alteryx