Heim  >  Artikel  >  Datenbank  >  Wie man mit Python zig Millionen Daten liest und automatisch in eine MySQL-Datenbank schreibt

Wie man mit Python zig Millionen Daten liest und automatisch in eine MySQL-Datenbank schreibt

WBOY
WBOYnach vorne
2023-05-30 11:55:281453Durchsuche

Szenario 1: Daten müssen nicht häufig in MySQL geschrieben werden

Verwenden Sie die Import-Assistent-Funktion des Navicat-Tools. Diese Software unterstützt eine Vielzahl von Dateiformaten und kann automatisch Tabellen basierend auf Dateifeldern erstellen oder Daten in vorhandene Tabellen einfügen, was sehr schnell und bequem ist.

Wie man mit Python zig Millionen Daten liest und automatisch in eine MySQL-Datenbank schreibt

Wie man mit Python zig Millionen Daten liest und automatisch in eine MySQL-Datenbank schreibt

Szenario 2: Die Daten sind inkrementell und müssen automatisiert und häufig in MySQL geschrieben werden. Testdaten: CSV-Format, etwa 12 Millionen Zeilen

Methode 1:

python ➕ Pymysql-Bibliothek

Pymysql-Befehl installieren:

import pandas as pd
data = pd.read_csv('./tianchi_mobile_recommend_train_user.csv')
data.shape
Wie man mit Python zig Millionen Daten liest und automatisch in eine MySQL-Datenbank schreibt

Code-Implementierung:

pip install pymysql

Meth od 2:

pandas ➕ sqlalchem ​​​​y: Pandas muss sqlalchemy einführen Um SQL zu unterstützen, können mit der Unterstützung von SQLalchemy Abfragen, Aktualisierungen und andere Vorgänge aller gängigen Datenbanktypen implementiert werden.

Code-Implementierung:

import pymysql
# 数据库连接信息
conn = pymysql.connect(
       host='127.0.0.1',
       user='root',
       passwd='wangyuqing',
       db='test01',
       port = 3306,
       charset="utf8")
# 分块处理
big_size = 100000
# 分块遍历写入到 mysql
with pd.read_csv('./tianchi_mobile_recommend_train_user.csv',chunksize=big_size) as reader:
    for df in reader:
        datas = []
        print('处理:',len(df))
#         print(df)
        for i ,j in df.iterrows():
            data = (j['user_id'],j['item_id'],j['behavior_type'],
                    j['item_category'],j['time'])
            datas.append(data)
        _values = ",".join(['%s', ] * 5)
        sql = """insert into users(user_id,item_id,behavior_type
        ,item_category,time) values(%s)""" % _values
        cursor = conn.cursor()
        cursor.executemany(sql,datas)
        conn.commit()
 # 关闭服务
conn.close()
cursor.close()
print('存入成功!')
Wie man mit Python zig Millionen Daten liest und automatisch in eine MySQL-Datenbank schreibtZusammenfassung

Die PyMySQL-Methode dauert 12 Minuten und 47 Sekunden, was immer noch relativ lang ist und eine große Codemenge erfordert, um diese Anforderung zu erfüllen dauert nur etwa 4 Minuten. Abschließend möchte ich hinzufügen, dass die erste Methode die Erstellung einer Tabelle im Voraus erfordert, die zweite Methode jedoch nicht. Daher wird empfohlen, die zweite Methode zu verwenden, die sowohl bequem als auch effizient ist. Wenn Sie immer noch das Gefühl haben, dass es langsam ist, können Sie das Hinzufügen von Multiprozessen und Multithreading in Betracht ziehen.

Die drei umfassendsten Methoden zum Speichern von Daten in einer MySQL-Datenbank:

Direkte Speicherung mit der Importassistentenfunktion von Navicat

Python pymysql

    Pandas sqlalchemy

Das obige ist der detaillierte Inhalt vonWie man mit Python zig Millionen Daten liest und automatisch in eine MySQL-Datenbank schreibt. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen