Voici un TD « IA & BDD » dans le contexte du « Machine Learning » sur les bases de données se décomposant en deux parties. Le premier consiste à mettre en place un code qui crée une base de données qui sera remplie à l’aide de questions posées à l’utilisateur (donner des objets dont la couleur est imposée). Le second permettra alors de demander des objets à l’utilisateur dans la console, sa couleur étant alors renvoyée en piochant dans la base de données créée.
Si tu travailles avec Pyzo et que tu obtiens l’erreur « No such file or directory », va consulter cette page: LIEN
Programmes ce TP directement dans Basthon ci-dessous, mais attention, tu dois faire les parties « Apprentissage » et « Utilisation » dans la même fenêtre et nommer ta base de données autrement que « 1-1 – TD – Applications du cours – BDD.db » car ce Basthon charge déjà un exemple de ce nom pour que tu puisse tester cette base sur la partie « utilisation » :
↑ Ce Basthon reste en cache du navigateur ↑
Visualiser le Basthon de correction - Apprentissage
Visualiser le Basthon de correction - Utilisation
Visualiser les liens Dropbox vers les différents documents de ce TD
Codes non exécutables indépendants de Basthon et Dropbox (peuvent ne pas être à jour)
Code Apprentissage :
''' 1 - Bases de données''''''1-3 - IA et BDD'''## 1-3-IAetBDD# CréationdelaBDDNom='3-1 - IA et BDD - Base de données.db'importsqlite3BDD = sqlite3.connect(Nom)cursor = BDD.cursor()Requete = """CREATE TABLE IF NOT EXISTS Objets(Couleur TEXT,Objet TEXT)"""cursor.execute(Requete)# ApprentissagefromrandomimportrandintasrandCouleurs = ['rouge','bleu','vert']Taille = len(Couleurs)foriinrange(5):Ind = rand(0,Taille-1)Couleur = Couleurs[Ind]Objet = input('Quelque chose de ' + Couleur + ' ? (en minuscules - Taper ENTER pour ne pas répondre) ')ifObjet != '':Requete = """INSERT INTO Objets VALUES (?,?);"""cursor.execute(Requete,(Couleur,Objet))# VérificationRequete = """SELECT name FROM sqlite_master WHERE type='table';"""cursor.execute(Requete)print(cursor.fetchall())Requete = """PRAGMA table_info(Objets);"""cursor.execute(Requete)print(cursor.fetchall())Requete = """SELECT * FROM Objets ;"""cursor.execute(Requete)Resultats = cursor.fetchall()print(Resultats)# FermetureBDD.commit()BDD.close()
Code Utilisation :
''' 1 - Bases de données''''''1-3 - IA et BDD'''## 1-3-IAetBDD# OuverturedelaBDDNom='1-3 - IA et BDD - Base de données.db'importsqlite3BDD = sqlite3.connect(Nom)cursor = BDD.cursor()# Vérificationprint("Liste des tables:")Req = """SELECT name FROM sqlite_master WHERE type='table';"""cursor.execute(Req)print(cursor.fetchall())# QuestionnementObjet = input('Un objet/Une chose de couleur définie ? (en minuscules) ')Requete = """SELECT DISTINCT Couleur from Objets WHERE Objet = '""" + Objet + """';"""cursor.execute(Requete)Res_1 = cursor.fetchall() # Touteslescouleursdel'objetRequete = """SELECT Couleur from Objets WHERE Objet = '"""+ Objet +"""' GROUP BY Couleur ORDER BY COUNT(*) DESC LIMIT 1;"""cursor.execute(Requete)Res_2 = cursor.fetchone()# RésultatNb_Res_1 = len(Res_1)ifNb_Res_1 == 0:print("Je ne connais pas le résultat")elifNb_Res_1 == 1:Resultat = Res_1[0][0]print("Résultat: ",Resultat)else:print("J'ai plusieurs résultats ! Les voici: ")foriinrange(Nb_Res_1):print(Res_1[i][0])print()print("Voici le plus probable: ")print(Res_2[0])# FermetureBDD.commit()BDD.close()