def insert_bien(liste_dico): """Insertion des données scrapées dans la base de données""" # recuperation des données contenues dans la table ville debut = time.time() liste_ville = [] for v in Ville.select(): liste_ville += [v.nom] nb = 0 nouvelle_villes = [] for ddico in liste_dico: if ddico["lieu"] not in liste_ville: liste_ville.append(ddico["lieu"]) num_ville = Ville.create(nom=ddico["lieu"]) nouvelle_villes.append(num_ville) else: recuperateur = Ville.select().where(Ville.nom == ddico["lieu"]) for r in recuperateur: num_ville = r liste_dico[nb]["id_ville"] = num_ville.id_ville nb += 1 #creations des données dans la base grâce aux dictionnaire.id_ville for biens in liste_dico: try: with db.atomic(): Logement.create(**biens) except Exception as e: print(e) pass fin = time.time() performance_insert = [fin - debut] print("la fonction insert_bien a été executée en", performance_insert) return nouvelle_villes
def insert_bien(liste_dico): liste_ville = [] nouvelle_villes = [] #recuperation des donnees contenues dans la tables villes query = Ville.select() for v in query : if v.nom not in liste_ville: liste_ville += [v.nom] for d in liste_dico: try : prix, prix_metre_carre, surface = calcul(d["prix"], d["prix_metre"]) if prix != None: prix = float(prix) else: prix = 0 if prix_metre_carre != None: prix_m = prix_metre_carre else: prix_m = 0 if surface != None: surface = int(surface) else: surface = 0 if d["ville"][-1] == " ": ville = d["ville"][:-1] else : ville = d["ville"] ville = ville.replace("'"," ") if ville not in liste_ville: liste_ville += [ville] nouvelle_ville = Ville.create(nom = ville) #la liste nouvelle_villes permet de récuperer les donnees #de cette ville par la suite nouvelle_villes += [nouvelle_ville] datep = d["date"] datep = datep.replace(" ","") datep = datep.replace("/","") datep = datetime.datetime.strptime(datep, "%d%m%Y").date() datec = datetime.datetime.now() query = "call insert_biens('"+ville+"','"+d['cp']+"','" query += d['quartier']+"','"+d['dpe']+"','"+d['energie']+"','" query += d['description'].replace("'","?").replace("%","$")+"','"+str(d['annee'])+"','"+d['taxe_f'] query +="','"+ d['contact']+"','"+str(datep)+"','"+d['lien']+"','"+str(prix)+"','" query += str(surface) +"','"+str(prix_m)+"','"+str(d['id_type'])+"','"+str(datec)+"','" query += str(d['nb_chambre'])+"','"+d['cave'] +"','"+d['place']+"','"+d['surface_t'] query += "','"+d['ext']+ "')" db.execute_sql(query) except Exception as error : print(error) pass return nouvelle_villes