Bonjour,
Cela fait pas mal de temps que j'ai un petit soucis vraiment bête mais je n'arrive pas à le résoudre seul, c'est assez ragent.
Le but de mon programme : se connecter à une BDD postgre et envoyer des requêtes sql. Le programme est écrit en python à l'aide de la librairie psycopg2. Le programme marche parfaitement, que ce soit pour la connexion ou l'envoie de requête sql
Problème : il suffit que je fasse une faute dans une requête pour que toutes les autres requête soit fausses. A le dire comme cela, j'ai l'impression que l'initialisation de la variable qui stocke la requête ne se mets pas à zéro. Aucune erreur est retourné (Windows 10, Visual Studio Code).
Voici le code dans une balise code et dans un fichier joint pour la personne qui aura vraiment le temps est l'envie. Le code dans le fichier joint est plus "agréable à regarder".
Je vous remercie énormément d'avance !
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64 #---------------------------------------------------# import psycopg2 import sys import os import socket from getpass import getpass #---------------------------------------------------# mot_de_passe = getpass() requete = None #---------------------------------------------------# os.system("cls") # Saisi des données de connexion print("\n\t***** Connexion BDD PostgreSQL *****") print("\nVeuillez saisir les informations de connexion : ") bdd = str(input("base de données : ")) nom_user = str(input("nom d'utilisateur : ")) mot_de_passe = str(getpass("mot de passe : ")) port_user = input("Veuillez saisir le port (si vide, par défaut PostgreSQL) : ") if(port_user == ''): port_user = None # Test de connexion try: os.system("cls") print("\n... Connexion à la base de données en cours ...") conn = psycopg2.connect(dbname=bdd, user=nom_user, password=mot_de_passe,host='localhost', port=port_user) cursor = conn.cursor() # création du curseur except(psycopg2.Error): print("\n Erreur de connexion à la bdd, veuillez vérifier les info saisies !") input("\n Veuillez saisir ENTRER pour quitter le programme ...") sys.exit(0) # fermeture du programme # Affichage Image ASCII print("... Connecté avec succès !\n") with open('image_elephant.txt', 'r') as f: for line in f: print(line, end='') while(requete != 'q'): requete == '' #requete = None if(requete == ''): # permet de continuer meme si la requete est vide continue elif(requete == 'q'): input("\n\n... Fermeture du logiciel en cours ...\n\nVeuillez saisir ENTRER pour quitter") cursor.close() # fermeture du curseur conn.close() # fermeture de la connexion SystemExit try: requete = str(input("\n--> ")) cursor.execute(requete) # Test de requete avec exception en cas d'erreur --> MARCHE PAS ! Une fois qu'on c'est trompé, toute les requetes suivante sont considérer comme fausses ! except(psycopg2.ProgrammingError, psycopg2.InternalError): # permet d'eviter un crash si la requete SQL est mauvaise : psycopg2.Error print("Erreur, verifier votre requete !") continue results = cursor.fetchall() for r in results: print(r) #---------------------------------------------------#
Partager