Différences
Ci-dessous, les différences entre deux révisions de la page.
Les deux révisions précédentes Révision précédente Prochaine révision | Révision précédente | ||
sian:2022:tpm1sql [2022/10/21 16:45] – [Requête plus complexes] fabien.rico | sian:2022:tpm1sql [2022/11/24 22:17] (Version actuelle) – [En python] fabien.rico | ||
---|---|---|---|
Ligne 80: | Ligne 80: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | * Faites une requète pour voirs les cours d'une école des mines (école avec mines dans le nom) | ||
+ | |||
+ | < | ||
+ | < | ||
+ | SELECT courses.title AS NomCours, organizations.title AS NomOrga FROM courses | ||
+ | JOIN courses_organizations ON courses.id=courses_organizations.id_course | ||
+ | JOIN organizations ON courses_organizations.id_organization=organizations.id | ||
+ | WHERE organizations.title REGEXP " | ||
+ | </ | ||
+ | </ | ||
+ | |||
===== En python ===== | ===== En python ===== | ||
+ | |||
+ | Pour python, vous pouvez utiliser le notebook https:// | ||
* Faire un programme python qui affiche pour chaque mot clef le nombre de fois qu'il est utilisé dans un cours. | * Faire un programme python qui affiche pour chaque mot clef le nombre de fois qu'il est utilisé dans un cours. | ||
+ | < | ||
+ | < | ||
+ | # | ||
+ | # coding: utf-8 | ||
+ | |||
+ | # ## Connexion à la base et curseur | ||
+ | # | ||
+ | |||
+ | # In[1]: | ||
+ | |||
+ | |||
+ | import mysql.connector | ||
+ | import json | ||
+ | |||
+ | conn = mysql.connector.connect( | ||
+ | host=" | ||
+ | user=" | ||
+ | password=" | ||
+ | database=" | ||
+ | cursor = conn.cursor() | ||
+ | |||
+ | |||
+ | # ## Éxécution de la requète | ||
+ | |||
+ | # In[2]: | ||
+ | |||
+ | |||
+ | cursor.execute(""" | ||
+ | SELECT categories.title AS motClef, courses.title AS titrecours | ||
+ | FROM courses JOIN courses_categories | ||
+ | ON courses_categories.id_course=courses.id | ||
+ | JOIN categories | ||
+ | ON courses_categories.id_categorie=categories.id | ||
+ | WHERE categories.genre=" | ||
+ | ORDER BY courses.id | ||
+ | """ | ||
+ | |||
+ | |||
+ | # ## Comptage des mots clef | ||
+ | # | ||
+ | # Pour chaque mot clef trouvé, j' | ||
+ | # Si le mot n'a jamais été vu, j' | ||
+ | # | ||
+ | # Au passage j' | ||
+ | # | ||
+ | |||
+ | # In[3]: | ||
+ | |||
+ | |||
+ | tab = {} | ||
+ | while True: | ||
+ | res = cursor.fetchone() | ||
+ | if res is None: | ||
+ | break | ||
+ | # Le mot clef est la première colonne demandée dans le SELECT alors il sera | ||
+ | # dans la première case du résultat | ||
+ | mot = res[0] | ||
+ | # On récupère le nmbre de fois où il a été vu ou 0 s'il n'a jamais été vu | ||
+ | nbdeja = tab.get(mot, | ||
+ | # on affiche | ||
+ | print(f" | ||
+ | # on ajoute un et on change la valeur du tableau | ||
+ | tab[mot] = nbdeja+1 | ||
+ | |||
+ | # Affichage | ||
+ | print(tab) | ||
+ | # Affichage plus joli | ||
+ | print(json.dumps(tab, | ||
+ | |||
+ | |||
+ | # ## on fait un nuage de mot | ||
+ | # | ||
+ | # Ce n'est pas demander mais à partir d'un dictionnaire qui compte le nombre d' | ||
+ | |||
+ | # In[5]: | ||
+ | |||
+ | |||
+ | # génération du nuage | ||
+ | import wordcloud | ||
+ | import matplotlib.pyplot as plt | ||
+ | wordcloud = wordcloud.WordCloud().generate_from_frequencies(tab) | ||
+ | # affichage | ||
+ | plt.imshow(wordcloud, | ||
+ | plt.axis(" | ||
+ | plt.show() | ||
+ | </ | ||
+ | </ | ||
- | * Faire un programme python qui obtient la liste des mots clef de chaque cours de chaque organisation et affiche le tableau | + | * Faire un programme python qui obtient la liste des mots clef de chaque cours de chaque organisation et affiche le tableau |
^ Nom organisation ^ liste mot clef ^ | ^ Nom organisation ^ liste mot clef ^ |