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()
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()
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!