Maison > base de données > tutoriel mysql > le corps du texte

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
Libérer: 2024-11-07 16:30:03
original
1007 Les gens l'ont consulté

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
Copier après la connexion

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)           
    """
Copier après la connexion

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()
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal