Maison  >  Article  >  base de données  >  Comment puis-je insérer efficacement plusieurs dictionnaires dans une base de données MySQL à l'aide de la méthode `executemany()` de Python ?

Comment puis-je insérer efficacement plusieurs dictionnaires dans une base de données MySQL à l'aide de la méthode `executemany()` de Python ?

Mary-Kate Olsen
Mary-Kate Olsenoriginal
2024-11-07 16:30:03958parcourir

How Can I Efficiently Insert Multiple Dictionaries into a MySQL Database Using Python's `executemany()` Method?

Insérer plusieurs dictionnaires dans MySQL à l'aide d'executemany() en Python

Lors de la récupération de données sur le Web et de leur insertion dans une base de données MySQL, il est crucial pour optimiser les performances afin d’éviter les blocages de la base de données. Le code fourni démontre une approche inefficace qui implique l'exécution d'une requête distincte pour chaque ligne de données de table. Pour résoudre ce problème, nous allons explorer comment exploiter la méthodeexecutemany() pour insérer plusieurs lignes simultanément.

La méthodeexecutemany() vous permet d'insérer une liste de paramètres dans une instruction préparée. Il prend deux arguments : l'instruction SQL et la liste des paramètres. L'instruction SQL doit avoir des espaces réservés (%s) pour les paramètres.

Pour utiliser executemany() dans ce scénario, nous devons d'abord transformer la liste des dictionnaires en un tuple de valeurs pour chaque ligne. Ceci peut être réalisé comme suit :

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

Ensuite, nous préparons l'instruction SQL avec des espaces réservés pour les paramètres :

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

Enfin, nous exécutons la méthodeexecutemany(), fournissant le Instruction SQL et liste des paramètres :

try:
    x.executemany(q, itemBank)
    conn.commit()
except:
    conn.rollback()

Cette approche améliore considérablement les performances en exécutant une seule requête pour toutes les lignes de la table, évitant ainsi la surcharge de plusieurs requêtes individuelles.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn