Heim > Datenbank > MySQL-Tutorial > Hauptteil

Wie kann ExecuteMany die MySQL-Einfügung von Wörterbuchlisten in Python optimieren?

Mary-Kate Olsen
Freigeben: 2024-11-07 19:59:03
Original
506 Leute haben es durchsucht

How can executemany optimize MySQL insertion of dictionary lists in Python?

Verwendung vonexecutemany für die effiziente MySQL-Einfügung von Wörterbuchlisten in Python

Beim Data Scraping werden häufig Informationen aus Tabellen extrahiert und in einer Datenbank gespeichert. Während der herkömmliche Ansatz funktioniert, kann er ineffizient werden und möglicherweise zum Absturz der Datenbank führen, wenn er nicht optimiert wird.

Betrachten Sie den folgenden Code, der versucht, Daten aus einer Liste von Wörterbüchern in eine MySQL-Datenbank einzufügen:

itemBank = []
for row in rows:
    itemBank.append((tempRow2, tempRow1, tempRow3, tempRow4))

# itemBank contains dictionaries representing data from each table row
for item in itemBank:
    tempDict1 = item[0]
    tempDict2 = item[1]
    tempDict3 = item[2]
    tempDict4 = item[3]

    q = """ INSERT IGNORE INTO
         TABLE1   
        (
           Item_Name,
           Item_Price,
           Item_In_Stock,
           Item_Max,
           Observation_Date
         ) VALUES (
           "{0}",
           "{1}",
           "{2}",
           "{3}",
           "{4}"
           )
        """.format(tempDict1['Item_Name'], tempDict2['Item_Price'], tempDict3['Item_In_Stock'],
                   tempDict4['Item_Max'], getTimeExtra)

    try:
        x.execute(q)
        conn.commit()
    except:
        conn.rollback()
Nach dem Login kopieren

Das Problem besteht darin, für jedes Wörterbuch in itemBank manuell individuelle Abfragen zu erstellen und auszuführen. Dieser Ansatz ist umständlich und fehleranfällig.

Nutzung von „executemany“

Die Lösung für diese Ineffizienz besteht in der Verwendung der Methode „executemany“, mit der Sie dieselbe Abfrage mehrfach ausführen können Mal mithilfe einer Liste von Parametern.

itemBank = []
for row in rows:
    itemBank.append((
        tempRow2['Item_Name'],
        tempRow1['Item_Price'],
        tempRow3['Item_In_Stock'],
        tempRow4['Item_Max'],
        getTimeExtra
    )) #append data


q = """ insert ignore into TABLE1 (
        Item_Name, Item_Price, Item_In_Stock, Item_Max, Observation_Date ) 
        values (%s,%s,%s,%s,%s)           
    """

try:
    x.executemany(q, itemBank)
    conn.commit()
except:
    conn.rollback()
Nach dem Login kopieren

In diesem modifizierten Code iterieren wir über die Zeilen, extrahieren Werte aus den Wörterbüchern und erstellen eine Liste von Tupeln, die anexecutemany übergeben werden. Die Abfrage selbst bleibt dieselbe, aber wir verwenden jetzt Platzhalter %s für die Werte.

Die Verwendung vonexecutemany verbessert die Effizienz drastisch, da alle Daten auf einmal gesendet werden, wodurch die Anzahl der Datenbankinteraktionen reduziert und das Risiko minimiert wird von Deadlocks.

Das obige ist der detaillierte Inhalt vonWie kann ExecuteMany die MySQL-Einfügung von Wörterbuchlisten in Python optimieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

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
Neueste Artikel des Autors
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!