Archives mensuelles : février 2023

Mon premier script Python

Pour marquer la date d’une pierre blanche !

Après plus de 15 ans de bons et loyaux service en PHP (et ce n’est pas terminé), j’ai l’occasion de travailler sur mon premier projet Python, et en ce mercredi 15 Février 2023 j’ai développé mon premier script dans ce langage.

Alors oui c’est basique mais je le pose ici pour le souvenir

import psycopg2
import csv

from psycopg2 import Error
#config :
# id de la liste que l'on veux remplir
id_liste = 300
# nom du fichier csv
filename = 'liste300.csv'
#
try:
    #connexion à la base
    conn = psycopg2.connect(database="nom_de_la_base",
                        host="localhost",
                        user="user_base",
                        password="pass_base",
                        port="5432")

    cursor = conn.cursor()
    #on vidange la liste au cas ou elle ne soit pas vierge
    cursor.execute("DELETE FROM taxonomie.cor_nom_liste WHERE id_liste = %s", (id_liste,))

    #parcours CSV
    nbInsert = 0
    nbError = 0;
    with open(filename, 'r') as csvfile:
        datareader = csv.reader(csvfile)
        for row in datareader:
            if row[0] != "cd_nom":
                #on recherche le cd_nom dans la table bib_nom pour récupérer la valeur id_nom
                cd_nom = row[0]
                cursor.execute("SELECT * FROM taxonomie.bib_noms WHERE cd_nom = %s", (cd_nom,))
                #on indique si la valeur n'existe pas
                nom = cursor.fetchone()
                if nom is None:
                    #raise Exception('cd_nom "' + str(cd_nom) + '" introuvable')
                    print('cd_nom "' + str(cd_nom) + '" introuvable ('+row[16]+') ')
                    nbError += 1
                else:
                    #insérer les données
                    id_nom = nom[0]
                    cursor.execute("INSERT INTO taxonomie.cor_nom_liste (id_nom, id_liste) VALUES(%s, %s)", (id_nom, id_liste,))
                    nbInsert += 1

    #commit
    conn.commit()
    print(str(nbInsert)+" lignes insérées")
    print(str(nbError)+" lignes ignorées")

except (Exception, Error) as error:
    print("Le script d'import retourne l'erreur : ", error)
finally:
    if conn:
        cursor.close()
        conn.close()

J’en profite pour remercier mon partenaire Iulian de me sortir de ma zone de confort, et qui après le NodeJs me lance sur Python. Je le remercie aussi de me permettre de me régaler sur d’autre projets avec l’utilisation de Symfony mon framework adoré !