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()
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é !