HELP projet de cours - Programmation en SQL et en Python

Réaliser un programme pour entrer des formulations chimiques

a marqué ce sujet comme résolu.

Bonjour,

Je débute en programmation et mes professeurs m’ont demandé de réaliser un programme pour pouvoir entrer et stocker des formulations chimiques avec un menu interactif.

Exemple du menu (sachant qu’il y a plusieurs autres paramètres à intégrer) :

Que voulez-vous faire ?
**************************************************
* Bienvenue sur votre assistant de formulation *
**************************************************
1- Entrer une nouvelle formulation ?
2- Visualiser des informations sur une formalisation existante ?
3- Supprimer une formulation
4- Quitter le programme

Voici mon programme (il n’y a que le Menu 3 qui fonctionne et le Menu 2 n’est pas terminé) :

## Menu 1- entrer une nouvelle formulation ##

import sqlite3 
connexion = sqlite3.connect("formulation.db") 
curseur = connexion.cursor() 

insérer_formu = str(input("Entrer une nouvelle formulation ?\n"))
id_formu = float(input("ID de la formulation : \n"))
id_produit = float(input("ID du Produit : \n"))
nom_produit_fini = str(input("Nom du produit fini : \n"))
nom_preparateur = str(input("Nom du préparateur : \n"))
date = float(input("Date : \n"))

requete = ("INSERT INTO FORMULATIONS, VALUES (...,...,...,...,...)")

print("La formulation a bien été prise en compte")

curseur.execute(requete)
ligne = curseur.fetchall()
print(ligne)
## Menu 2 - Entrée de manip ##

import sqlite3 
connexion = sqlite3.connect("formulation.db")

curseur = connexion.cursor() 

enter_manip = str(input("Entrer une manip ?"))
## Menu 3 - afficher ingrédients d'une formulation préexistante ##

import sqlite3
connexion = sqlite3.connect("formulation.db")
curseur=connexion.cursor()

afficher_ing = str(input("Visualiser des informations sur une formulation existante ? \n"))

requete = ("SELECT Cosing_Number, INCI_Name FROM FORMULATIONS f, utilise u, ingredients ing WHERE (u.ID_PRODUIT_INGREDIENT=ing.Cosing_Number) AND (f.NOM_PRODUIT_FINI = '" + afficher_ing  +"')")

curseur.execute(requete)
ligne = curseur.fetchall()
print(ligne)
## Menu 4 - Supprimer une formulation ##

import sqlite3

connexion = sqlite3.connect("formulation.db")
curseur=connexion.cursor()

supp = str(input("Supprimer une formulation ? \n"))
requete = ("DELETE FROM FORMULATIONS f WHERE f.NOM_PRODUIT_FINI = "Creme hydratante de jour")

curseur.execute(requete)
ligne = curseur.fetchall()
print(ligne)

J’espère avoir été claire. Merci pour vos réponses !

+0 -0

Désolée de ne pas avoir été claire. Je vous mets la mise à jour de mon programme juste en dessous. Il bloque à la ligne 129, j’ai ce message qui s’affiche :

File "/home/etu02m1formulation/PROJET4.py", line 129 requete = ("SELECT*FROM FORMULATIONS") ^ SyntaxError: invalid syntax

J’ai tout essayé mais rien n’y fait. De plus, le menu de mon programme est censé être interactif mais je ne sais pas comment m’y prendre.

voici mon programme :

import sqlite3 connexion = sqlite3.connect("formulation.db")

curseur = connexion.cursor()

## Affichage du Menu ## 



print(" __________________________________________________________________________")
print("| Selectionner l'action que vous souhaitez réaliser en tapant le bon numéro.|")
print("| |")
print("~ MENU ~")
print("| 1 – Entrer une nouvelle formulation  |")
print("| 2 – Entrée une manip |")
print("| 3 – Rechercher des ingrédients|")
print("| 4 – Afficher ing  d'une formulation préexistante |")
print("| 5 – Supprimer une formulation |")
print("| 6 – Afficher les formulations qui existent |")
print("| 7 – Quitter|")

print("----------------------------------------------------------------------")


## Menu 1- entrer une nouvelle formulation ##

#import sqlite3 #importer le module sqlite 3 
#connexion = sqlite3.connect("formulation.db") #etablir la connexion avec la base de donnee souhaitee
#curseur = connexion.cursor() #on cree un curseur dans la base de donnee et qui va executer les ordres

insérer_formu = str(input("Entrer une nouvelle formulation ?\n"))
id_formu = float(input("ID de la formulation : \n"))
id_produit = float(input("ID du Produit : \n"))
nom_produit_fini = str(input("Nom du produit fini : \n"))
nom_preparateur = str(input("Nom du préparateur : \n"))
date = float(input("Date : \n"))

requete = ("INSERT INTO FORMULATIONS VALUES ('"+ID_FORMULATION+"','"+ID_PRODUIT+"','"+NOM_PRODUIT_FINI+"','"+NOM_PREPARATEUR+"','"+DATE+"');")

print("La formulation a bien été prise en compte")

curseur.execute(requete) #executer la requete
ligne = curseur.fetchall() #on recupere e=les resultat de la requete
print(ligne) #afficher le resultat


## Menu 2 - Entrée une manip ##

#import sqlite3 
#connexion = sqlite3.connect("formulation.db")

#curseur = connexion.cursor() 

enter_manip = str(input("Entrer une manip ? \n"))
id_manip = str(input("Quelle est l'ID de la manip ?\n"))
operation = str(input("Quelle est l'opération ?\n"))
duree = float(input("Quelle est la duree (en minutes)\n"))
temps = float(input("Quel est le temps (en minutes)\n"))
vitesse = float(input("Quelle est la vitesse (en unités SI)\n"))

requete = ("INSERT INTO MANIPS VALUES ('"+ID_MANIP+"','"+TYPE_OPERATION+"','"+VITESSE+"','"+TEMPERATURE+"','"+DUREE+"');")

print ("La manip a bien ete prise en compte")

curseur.execute(requete)
ligne = curseur.fetchall()
print(ligne)

## Menu 3 - Rechercher des ingrédients ##
#import sqlite3

#connexion = sqlite3.connect ("formulations.db") #etablir la connexion avec la base de donnee souhaitee
numero = str(input("Quel est le cosing number souhaite ? \n"))

while numero != "quit" :
   curseur = connexion.cursor() #on cree un curseur dans la base de donnee et qui va executer les ordres
   curseur.execute("SELECT INCI_Name FROM ingredients WHERE (Cosing_Number =" + numero +")") #execution de la requete SQL
   ligne = curseur.fetchone() #on recupere les resultats de la requete 
   if ligne == None :
       print("Il n'y a pas d'ingredient avec ce cosing number")
       numero = str(input("Quel est le cosing number souhaite ? \n"))
      
   else :
       print(ligne[0])
       numero = str(input("Quel est le cosing number souhaite ? \n"))


## Menu 4 - afficher ing  d'une formulation préexistante ##

#import sqlite3
#connexion = sqlite3.connect("formulation.db")
#curseur=connexion.cursor()

afficher_ing = str(input("Visualiser des informations sur une formulation existante ? \n"))

requete = ("SELECT Cosing_Number, INCI_Name FROM FORMULATIONS f, utilise u, ingredients ing WHERE (u.ID_PRODUIT_INGREDIENT=ing.Cosing_Number) AND (f.NOM_PRODUIT_FINI = '" + afficher_ing  +"')")

curseur.execute(requete)
ligne = curseur.fetchall()
print(ligne)

## Menu 5 - Supprimer une formulation ##

#import sqlite3

#connexion = sqlite3.connect("formulation.db")
#curseur=connexion.cursor()

afficher_nom = str(input("Supprimer une formulation ? \n"))
requete = ("DELETE FROM FORMULATIONS f WHERE f.NOM_PRODUIT_FINI = '"+NOM_PRODUIT_FINI+"';")

curseur.execute(requete)
ligne = curseur.fetchall()
print(ligne)


## Menu 6 - Afficher les formulations qui existent ##

#import sqlite3 

#connexion = sqlite3.connect("formulation.db")
#curseur = connexion.cursor()

afficher_formu = str(input("Afficher les formulations existantes ?\n")

requete = ("SELECT*FROM FORMULATIONS")

curseur.execute(requete)
ligne = curseur.fetchall()
print(ligne)

## Creation resultat test et evalue ##
#import sqlite3

#connexion = sqlite3.connect("formulation.db)
#curseur = connexion.cursor()

curseur.execute("CREATE TABLE Resultat_Test (Consistance TEXT, Homogeneite TEXT, Odeur TEXT, Toucher TEXT, Sensation_peau TEXT, Sens_emulsion TEXT);")

curseur.execute("CREATE TABLE evalue (ID_FORMULATION INTEGER, ID_RESULTAT_TEST INTEGER);")

ligne = curseur.fetchall()
print(ligne)
+0 -0

Si je prends un morceau de ton code (celui qui est concerné ici):

#import sqlite3 

#connexion = sqlite3.connect("formulation.db")
#curseur = connexion.cursor()
requete = ("SELECT*FROM FORMULATIONS")
curseur.execute(requete)

Tout d’abord, toutes les lignes où tu mets un # en premier caractère seront ignorés par python. Donc il faut les décommenter si c’est du code.

Ensuite, la fonction curseur.execute attend un str en entrée mais tu lui passes un tuple (car la chaîne est entre parenthèses. Il faut donc retirer ces parenthèses.

Enfin, il manque des espaces autour de * dans SELECT*FROM FORMULATIONS, c’est à dire écrire SELECT chose_a_selectionner FROM FORMULATIONS, où chose_a_selectionner peut être n’importe quelle nom présent dans la table (ici ça sera *).

Connectez-vous pour pouvoir poster un message.
Connexion

Pas encore membre ?

Créez un compte en une minute pour profiter pleinement de toutes les fonctionnalités de Zeste de Savoir. Ici, tout est gratuit et sans publicité.
Créer un compte