[PYTHON] Accro au code de caractère en insérant et en extrayant des données avec SQL Alchemy

Addictive à SQLAlchemy et au code de caractère (UTF-8, Unicode)

problème

Si vous mettez les données dans MySQL par vous-même, elles ne seront pas déformées si vous les supprimez avec sqlalchemy, mais si vous les placez dans le fichier de vidage que vous avez reçu d'un ami, elles seront déformées si vous les supprimez avec sqlalchemy / (^ o ^) \

Solution

Lorsque vous utilisez sqlalchemy pour déplacer des données d'entrée et de sortie, ** Insérer et extraire (sélectionner) utilise toujours le même code de caractère (paramètre). ** **


Commentaire

Cette fois, les bases suivantes? J'essayais d'établir une bonne connexion.

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

from sqlalchemy import create_engine,
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import MetaData


#Traitement lié à la connexion avec db
engine = create_engine('mysql://username:password@localhost/dbname?charset=utf8')
Base = declarative_base()
metadata = MetaData()
Session = sessionmaker(bind=engine)
session = Session()

Il n'y a pas de problème fatal si vous l'installez et le retirez vous-même. Cependant, soyez prudent lorsque vous manipulez des données reçues d'autres personnes avec sqlalchemy.

Cette fois, j'ai récupéré un fichier de vidage de mysql et j'ai inséré les données, mais quand je l'ai sorti via sqlalchemy, les caractères étaient déformés / (^ o ^) \

Statut

moi même:

create_engine('mysql://username:password@localhost/dbname')

charset n'est pas défini sur utf-8 / (^ o ^) \

Adversaire: Le jeu de caractères a été correctement défini sur utf-8. (Je n'ai pas utilisé sqlalchemy parce que j'insérais des données dans MySQL avec des rails.)

Comment l'avez-vous réparé?

Je l'ai réécrit comme suit.

create_engine('mysql://username:password@localhost/dbname?charset=utf8')

Je viens d'ajouter? Charset = utf8 à la fin. Cependant, le flux suivant n'est pas bon.

Insérer des données (sans? Charset = utf8) ↓ Extraire les données (avec? Charset = utf8 ajouté) Les caractères sont déformés.

Insérons et récupérons des données avec les mêmes paramètres. En d'autres termes

Insérer des données (avec? Charset = utf8 ajouté) ↓ Extraire les données (avec? Charset = utf8 ajouté)

De cette façon, les caractères déformés ne se produiront pas.

Et vice versa. Si vous avez inséré les données sans? Charset = utf8, récupérez-les sans? Charset = utf8.

Si vous récupérez les données avec? Charset = utf8 attaché, les données de caractère seront renvoyées en Unicode. Si vous n'avez pas ajouté? Charset = utf8, il a été renvoyé ascii.

Je veux faire Python3 dès que possible \ (^ o ^) /

Recommended Posts

Accro au code de caractère en insérant et en extrayant des données avec SQL Alchemy
[Python / Ruby] Comprendre le code Comment obtenir des données en ligne et les écrire au format CSV
Que faire si vous êtes accro aux codes de caractères Windows
Obtenez des données supplémentaires vers LDAP avec python (Writer et Reader)
Introduction à RDB avec sqlalchemy Ⅰ
Comment mettre à jour avec SQLAlchemy?
Comment modifier avec SQLAlchemy?
Group_by avec sqlalchemy et sum
Comment supprimer avec SQLAlchemy?
"Introduction à l'analyse de données par modélisation statistique bayésienne à partir de R et Stan" implémenté en Python
Générer un code de correction d'erreur pour restaurer la corruption des données avec la bibliothèque zfec
Faites fonctionner Jupyter avec l'API REST pour extraire et enregistrer le code Python
Une note à laquelle j'étais accro lors de la création d'une table avec SQL Alchemy
Déplacer les données vers LDAP avec python Change / Delete (Writer et Reader)
Comment créer un environnement d'exécution Python et Jupyter avec VSCode
Connectez-vous à plusieurs bases de données avec SQL Alchemy
Comment gérer les données déséquilibrées
Utilisation de sessions et de réflexions avec SQL Alchemy
Comment augmenter les données avec PyTorch
Commandes Linux liées au code de caractère
Comment INNER JOIN avec SQL Alchemy
Enregistrer les données JSON reçues par Mosquitto sur Docker vers DB et Elasticsearch
Conversion de code de caractère. nfk pas. Alternative avec iconv et tr
J'étais accro à la création d'un environnement Python venv avec VS Code
Triez les visages d'anime en grattant les pages de personnages d'anime avec Beautiful Soup et Selenium
Code Python pour former et tester avec Custom Vision of Cognitive Service
N'hésitez pas à frapper 100 sciences des données avec Google Colab et Azure Notebooks!