1 pièce(s) jointe(s)
Problème de requete SQL - PostgreSQL/Python/Psycopg2
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:
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)
#---------------------------------------------------# |