J'utilise actuellement MySQL et Python pour extraire des données du Web. Plus précisément, j'efface des données de table et les insère dans ma base de données. Ma solution actuelle fonctionne, mais je pense qu'elle est extrêmement inefficace et verrouillera très probablement ma base de données si je ne réécris pas le code. Voici ce que j'utilise actuellement (code partiel):
itemBank = []
for row in rows:
itemBank.append((tempRow2,tempRow1,tempRow3,tempRow4)) #append data
#itemBank List of dictionaries representing data from each
row of the table. i.e.
('Item_Name':"Tomatoes",'Item_Price':"10",'Item_In_Stock':"10",'Item_Max':"30")
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()
L'exécution de chaque ligne du tableau est fastidieuse. J'ai essayé d'utiliser executemany
, mais je n'arrive pas à comprendre comment accéder correctement aux valeurs des dictionnaires. Alors, comment puis-je utiliser executemany
ici pour insérer dans la base de données compte tenu de la structure de mes données?
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()
J'espère que cela vous aidera