Heim > Backend-Entwicklung > Python-Tutorial > Detaillierte Erklärung von Speicherlecks und verstümmelten chinesischen Zeichen im MySQL-Modul in Python

Detaillierte Erklärung von Speicherlecks und verstümmelten chinesischen Zeichen im MySQL-Modul in Python

高洛峰
Freigeben: 2016-10-18 13:44:51
Original
1277 Leute haben es durchsucht

Beim Herstellen einer Verbindung zu MySQL-Python schreibt standardmäßig jeder

con=MySQLdb.connect(user='xxx',passwd='xxx',host='xxx',port=6600,charset='gbk')
Nach dem Login kopieren

Sobald „gbk“ angegeben ist, setzt MySQL-Python standardmäßig use_unicode=True. Das Ergebnis ist, dass MySQL-Python das Python-eigene Codec-Modul für die Zeichendekodierung verwendet. In der Praxis stellt sich jedoch heraus, dass der GBK-Codierungszeichensatz der MySQL-Bibliothek größer ist als der GBK-Codierungssatz von Python. Einige Zeichen, die in MySQL gespeichert werden können, lösen Fehler aus, wenn sie mit dem Python-Codec analysiert werden. Ein schwerwiegenderes Problem besteht darin, dass use_unicode=True vor mysql-python1.2.3 mysql-python dazu veranlasste, diesen Speicherleckfehler zu dekodieren. Alle dekodierten Datenbankzeichenfolgen werden über MySQL-Python als Unicode-Objekte ausgegeben und müssen erneut kodiert werden, um in eine Datei ausgegeben zu werden.


Die Lösung besteht darin, use_unicode=False zu erzwingen. Das heißt:

con=MySQLdb.connect(user='xxx',passwd='xxx',host='xxx',port=6600,charset='gbk',use_unicode=False)
Nach dem Login kopieren

Auf diese Weise kommt es zu keinen Speicherverlusten und es ist keine Codierung bei der Ausgabe der Datei erforderlich. Es vermeidet auch das Problem, dass der Codec von Python die in MySQL GBK gespeicherten Zeichenfolgen nicht analysieren kann. Schließlich können wir für MySQL4 den Zeichensatzparameter leer lassen:

con=MySQLdb.connect(user='xxx',passwd='xxx',host='xxx',port=6600,use_unicode=False)
Nach dem Login kopieren

Das löst dieses Problem perfekt, haha


Verwandte Etiketten:
Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage