Python verwendet Pandas, um CSV-Dateien zu lesen und in MySQL zu schreiben

高洛峰
Freigeben: 2019-02-23 16:27:47
Original
4989 Leute haben es durchsucht

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)
Nach dem Login kopieren

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 Login kopieren

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 Login kopieren

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')
Nach dem Login kopieren

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))
Nach dem Login kopieren

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!

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
Über uns Haftungsausschluss Sitemap
Chinesische PHP-Website:Online-PHP-Schulung für das Gemeinwohl,Helfen Sie PHP-Lernenden, sich schnell weiterzuentwickeln!