Fassen wir die verschiedenen Probleme zusammen, auf die ich kürzlich gestoßen bin, als ich Python zum Lesen und Schreiben von CSV zum Speichern der Datenbank verwendet habe.
Empfohlene verwandte MySQL-Video-Tutorials: „MySQL-Tutorial“
Code:
reload(sys) sys.setdefaultencoding('utf-8') host = '127.0.0.1' port = 3306 db = 'world' user = 'root' password = '123456' con = MySQLdb.connect(host=host,charset="utf8",port=port,db=db,user=user,passwd=password) try: df = pd.read_sql(sql=r'select * from city', con=con) df.to_sql('test',con=con,flavor='mysql') except Exception as e: print(e.message)
Wenn nichts Unerwartetes passiert A Der Satz wird gedruckt: Datenbankvariante MySQL wird nicht unterstützt
Ich habe die Antwort auf Stackoverflow gefunden: Die Variante „MySQL“ ist in Pandas Version 0.19 veraltet.
Lassen Sie es uns anders ändern:
reload(sys) sys.setdefaultencoding('utf-8') host = '127.0.0.1' port = 3306 db = 'world' user = 'root' password = '123456' engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db)) try: df = pd.read_sql(sql=r'select * from city', con=engine) df.to_sql('test',con=engine,if_exists='append',index=False) except Exception as e: print(e.message)
Nach dem Ausführen können Sie den Indexparameter speichern, um anzugeben, ob der Index des DataFrame als Spalte gespeichert werden soll. Im Allgemeinen ist er nicht erforderlich, daher ist der Wert False
Jetzt Das Problem scheint gelöst zu sein. Ja, aber es gibt immer noch ein kleines Problem.
Angenommen, ich habe eine CSV-Datei mit Chinesisch (mein Fenster):
Name der Altersklasse
Xiao Ming 15, erste Klasse
Xiao Zhang 18, dritte Klasse
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s") % (user, password, host, db)) try: df = pd.read_csv(r'C:\Users\xx\Desktop\data.csv') print(df) df.to_sql('test', con=engine, if_exists='append', index=False) except Exception as e: print(e.message)
Nach dem Drucken und Verarbeitung Es ist verstümmelt. Am besten geben Sie die Codierung an, wenn wir CSV lesen:
df = pd.read_csv(r'C:\Users\xx\Desktop\data.csv',encoding='gbk')
Wir können die Informationen normal drucken, aber es wird erneut ein Fehler gemeldet:
UnicodeEncodeError: Der Codec „latin-1“ kann Zeichen an Position 0-1 nicht kodieren: Ordnungszahl nicht im Bereich (256)
Es handelt sich immer noch um ein Kodierungsproblem. Der Grund dafür ist, dass wir die Kodierung nicht angegeben haben Wir haben es in der Datenbank gespeichert. Ich habe mich auch täuschen lassen, als ich versuchte, dieses Problem zu lösen. Alles im Internet ist verfügbar. Ich werde nicht über den Prozess sprechen, schauen Sie sich den Code an:
engine = create_engine(str(r"mysql+mysqldb://%s:" + '%s' + "@%s/%s?charset=utf8") % (user, password, host, db))
Gelöst
Verwandte Artikel:
Detaillierte Erklärung der echten IP-Anfrage von Pandas Python-Datenanalyse
Detaillierte Erläuterung der CDN-Protokollanalyse über die Pandas-Bibliothek in Python
Tutorial zur Verwendung des Pandas-Frameworks von Python zum Bearbeiten von Daten in Excel Dateien
Das obige ist der detaillierte Inhalt vonPython verwendet Pandas, um CSV-Dateien zu lesen und in MySQL zu schreiben. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!