Wenn Sie die Daten selbst in MySQL ablegen, werden sie nicht verstümmelt, wenn Sie sie mit sqlalchemy herausnehmen. Wenn Sie sie jedoch in die Dump-Datei einfügen, die Sie von einem Freund erhalten haben, werden sie verstümmelt, wenn Sie sie mit sqlalchemy / (^ o ^) \ herausnehmen
Wenn Sie sqlalchemy zum Ein- und Auslagern von Daten verwenden, ** verwenden Sie beim Einfügen und Extrahieren (Auswählen) immer denselben Zeichencode (Einstellung). ** ** **
Diesmal die folgenden Grundlagen? Ich habe versucht, eine gute Verbindung herzustellen.
# -*- coding: utf-8 -*-
from sqlalchemy import create_engine,
from sqlalchemy.orm import sessionmaker
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import MetaData
#Verarbeitung im Zusammenhang mit der Verbindung mit db
engine = create_engine('mysql://username:password@localhost/dbname?charset=utf8')
Base = declarative_base()
metadata = MetaData()
Session = sessionmaker(bind=engine)
session = Session()
Es gibt kein schwerwiegendes Problem, wenn Sie es selbst ein- und ausbauen. Seien Sie jedoch vorsichtig, wenn Sie mit Daten umgehen, die von anderen Personen mit sqlalchemy empfangen wurden.
Dieses Mal bekam ich eine Dump-Datei von MySQL und fügte die Daten ein, aber als ich sie über SQLalchemy herausnahm, waren die Zeichen verstümmelt / (^ o ^) \
mich selber:
create_engine('mysql://username:password@localhost/dbname')
Zeichensatz ist nicht auf utf-8 / (^ o ^) \ gesetzt
Gegner: Der Zeichensatz wurde ordnungsgemäß auf utf-8 eingestellt. (Ich habe sqlalchemy nicht verwendet, weil ich Daten mit Rails in MySQL eingefügt habe.)
Ich habe es wie folgt umgeschrieben.
create_engine('mysql://username:password@localhost/dbname?charset=utf8')
Ich habe gerade? Charset = utf8 am Ende hinzugefügt. Der folgende Fluss ist jedoch nicht gut.
Daten einfügen (ohne? Charset = utf8) ↓ Daten extrahieren (mit? Charset = utf8 hinzugefügt) Die Charaktere sind verstümmelt.
Lassen Sie uns Daten mit denselben Einstellungen einfügen und abrufen. Mit anderen Worten
Daten einfügen (mit? Charset = utf8 hinzugefügt) ↓ Daten extrahieren (mit? Charset = utf8 hinzugefügt)
Auf diese Weise treten keine verstümmelten Zeichen auf.
Und umgekehrt. Wenn Sie die Daten ohne? Charset = utf8 eingefügt haben, rufen Sie sie ohne? Charset = utf8 ab.
Wenn Sie die Daten mit? Charset = utf8 abrufen, werden die Zeichendaten in Unicode zurückgegeben. Wenn Sie? Charset = utf8 nicht hinzugefügt haben, wurde es ascii zurückgegeben.
Ich möchte Python3 so schnell wie möglich machen \ (^ o ^) /
Recommended Posts