Introduction à Python

Présentation de python

Python c'est quoi ?

Type de langage : Interprété & haut niveau

Créateur : Guido Van Rossum

Date de création : Février 1991

Licence : Équivalent BSD

Plateformes : Unix, Windows, etc.

Particularités

Langage multi-paradigme :  impératif, fonctionnel (?)

et objet

Langage de type scripting (comme PHP)

Indentation obligatoire qui délimite les structures (4 espaces)

Typage dynamique fort (pas comme PHP)

Python à quoi ça sert ?

Le monde académique

L'administration système

Le logiciel lourd

La science

Le web

L'électronique et l'embarqué

Pourquoi utiliser Python avec la Raspberry ?

Très populaire dans la communauté

Simple à apprendre et très utile

Pleins de lib pour contrôler la Pi

Installer notre environnement de développement

1. Installez Linux !

Dans notre cas, nous utiliserons Raspbian sur la Raspberry Pi, vous trouverez un tutoriel ici.

2. Installer un IDE

wget -qO - https://download.sublimetext.com/sublimehq-pub.gpg | sudo apt-key add -
sudo apt-get install apt-transport-https
echo "deb https://download.sublimetext.com/ apt/stable/" | sudo tee /etc/apt/sources.list.d/sublime-text.list
sudo apt-get update
sudo apt-get install sublime-text

Python ne demande aucun IDE particulier.

Nous allons donc installer Sublime Text

3. Installer Python 3.5

sudo apt install python3.5

Plusieurs versions de Python sont disponibles.

Nous allons travailler sur Python 3.5, à la fois suffisamment récent pour avoir toutes les fonctionnalités nécessaires et assez ancien pour être bien supporté

4. Installer une base de données

sudo apt install mysql-server mysql-client

Nous allons aussi installer la base de données MySQL.

Une fois ces lignes exécutées, MySQL va vous demander de définir le mot de passe pour le compte root de la base de données. Retenez le bien !

Et c'est tout !

Découvrir le shell Python

Le shell python c'est quoi ?

Python est un langage interprété et il permet d'écrire du code directement dans l’interpréteur (le shell) sans avoir à créer de fichier.

C'est pratique pour tester rapidement des trucs.

Lancer ou quitter le shell Python

Pour lancer le shell Python, il vous suffit de démarrer python avec la commande suivante :

python3.5

Le shell va se lancer et le symbole ">>>" indique qu'il attend que vous tapiez du code.

Pour quitter le shell Python, il vous suffit de tapez la commande permettant de quitter un programme python :

exit()

Vous retombez alors sur votre terminal.

Quelques tests avec le shell

1. Créer une variable str

2. Afficher le contenu de cette variable

3. Créer deux variables int

4. Les multiplier

5. Afficher du texte

Créer un script Python

Python, c'est pas seulement du shell

Il est possible d’exécuter du code Python directement depuis le shell, mais ce n'est vraiment pas pratique !

 

Pour stocker notre code et l’exécuter quand on en a besoin, on va plutôt créer des fichiers Python contenant l'ensemble du code à lire.

Les en-têtes de fichiers

Pour créer un script Python, il va falloir indiquer au système avec quel logiciel il devra lire le script.

Pour cela, il vous suffit de créer un simple fichier texte et de le commencer par les lignes si-dessus.

#!/usr/bin/env python3.5
#-*- coding: utf-8 -*-

La première ligne indique qu'il faut executer le script avec python3.5

La seconde ligne indique que nous allons utiliser l'encodage utf-8. Depuis python 3 cette seconde ligne n'est pas obligatoire.

Notre premier script Python

Pour commencer, nous allons créer un simple script affichant "Hello World !" dans le terminal.

#!/usr/bin/env python3.5
#-*- coding: utf-8 -*-
print('Hello World !')

Pour cela, créer un fichier nommé "hello_world.py", écrivez-y le code ci-dessous et enregistrez le.

Exécuter le script

Dans un premier temps, nous allons rendre le script exécutable via la commande ci-dessous

/chemin/vers/hello_world.py

Pour exécuter le script il n'y a pas qu'à taper son nom

chmod +x /chemin/vers/hello_world.py

Utiliser des variables

Créer une variable

Les variables sont créée à la volé. Pas besoin de les déclarer au début du programme.

Pour créer une variable on utilise "=".

name = 'toto'

Exemple pour créer une variable "name" qui contient le texte "toto"

Modifier une variable

Pour modifier une variable, il suffit de lui assigner une nouvelle valeur, comme la première fois.

name = 'toto'
name = 'titi'

Dans l'exemple ci-dessus la variable name contient maintenant la chaîne de caractère "titi".

Assigner plusieurs variables d'un coup...

Python permet d'assigner plusieurs variables en une seule ligne.

firstname, lastname = 'Élise', 'Lucet'

Dans l'exemple ci-dessus la variable firstname contient la chaîne "Élise" et lastname la chaîne "Lucet".

...et la même valeur à plusieurs variables

Vous pouvez aussi assigner la même valeur à plusieurs variables.

activate_autocomplete = activate_coloration = True

Ici activate_autocomplete et activate_coloration valent toutes les deux vrai (booléen)

Lire une entrée utilisateur

Python permet de demander à un utilisateur de rentrer du texte au clavier.

user_name = input('What is your name ?')

Ici le programme va afficher la question "What is your name ?" à l'utilisateur, lui demander du texte et stocker la réponse dans la variable user_name.

 

Attention : Le retour de "input" est toujours du texte, même si l'utilisateur rentre un nombre !

Les types en Python

Python repose sur un typage dynamique fort !

Deux conséquences :

 

1. Python utilise le ducktyping, et on ne type donc que rarement les variables.

 

2. Vous ne pouvez pas additionner des types différents, Python ne cast pas automatiquement (contrairement à PHP par exemple).

Exemple, on ne peux pas additionner du texte et des nombres.

Les différents types : numériques

Int : Nombre entier [-2 147 483 648, +2 147 483 647]

Long : Nombre entier [-infini, -2 147 483 648] et [+2 147 483 647, +infini]

Float : Nombre à virgule

Complex : Nombre complexes

Les différents types : chaines

Str : Chaîne de caractères Unicode UTF-8

Bytes : Chaîne de caractères pas Unicode stockée sous forme de tableau d'entiers (c'est de la merde faut pas toucher)

Les différents types : listes, dictionnaires, etc.

List : Une liste de données sans clefs.

Ex : [1, 22, 8, 'toto', 3.1].

Dictionnaire : Comme une liste, les clefs en plus.

Ex : {'age' : 10, 'name' : 'Toto'}.

Tuples : Comme une liste, mais qu'on peux pas modifier.

Ex : ('on', 'off', 'off', 'on').

 

Et encore d'autres que nous verrons au cas par cas...

Les différents types : Booléen, None.

Bool : Un booléen vrai ou faux. S'écrit True ou False, obligatoirement avec une majuscule.

Ex : activate_color = True.

None : Valeur vide/non définie.

Ex : john_snow_know = None.

Connaître le type d'une variable

Vous pouvez à tout moment retrouver le type d'une variable simplement à l'aide de la fonction type().

Gérer et afficher du texte

avec Python

Les chaînes de caractères dans Python

Par défaut, en Python 3 les chaînes de caractères sont de type Str et sont des chaînes Unicode UTF-8.

Une chaîne de caractère est entre guillemets simples ', ou doubles ".

ma_chaine = 'Hello World !'
ma_seconde_chaine = "Hello World !"

Les caractères spéciaux dans une chaine

1. Pour écrire un retour à la ligne, vous pouvez utiliser \n.

2. Le caractère d'échappement en python est \. Il est par exemple nécessaire pour échapper un guillemet au milieu d'une chaîne.

 

Afficher des chaînes de caractères

Pour afficher une chaîne de caractère, Python utilise la fonction print().

Cette fonction prend une chaîne en argument.

Par exemple, pour afficher la chaine "Hello World !".

hello = 'Hello World !'
print(hello)
print('Hello World !')

Ou

Afficher des chaînes et des variables

print() peut aussi concaténer plusieurs chaînes et des variables. Pour cela, il suffit d'écrire chaînes et variables dans l'ordre d'apparition séparées par une virgule.

age = 12
print('Bonjour, je m\'appelle Robert, j\'ai', age, 'ans. Tu veux des bonbons ?')

print() va automatiquement transformer les variables en chaînes de caractères.

Gérer les délimiteurs avec print()

Par défaut print() concatène les variables en ajoutant des espaces entre les chaînes et un retour à la ligne à la fin.

Pour modifier ce comportement, passez les arguments sep & end à print() pour définir le séparateur & le caractère de fin à utilisées.

chiffre_1 = 10
chiffre_2 = 5
result = chiffre_1 - chiffre_2
print(chiffre_1, '-', chiffre_2, '->', result, sep = '', end = '.')
10-5->5.

Exemple :

Le code ci-dessous

Va afficher le résultat suivant

Formater des chaînes

complexes

Pour des chaînes très complexes, il est possible d'utiliser la fonction format() pour formater la chaîne et insérer des variables dedans.

 

Pour cela, format utilise des "flags" de la forme {} et qui seront remplacées par les variables fournies.

 

L'utilisation la plus basique de format() est d'insérer des variables dans l'ordre pour remplacer les flags {}.

La variable n°1 remplacera le flag n°1, la n°2 le n°2, etc.

product = 'Pommes bi-goût'
price = 1.69

print('Les {} coûtent {} € !'.format(product, price))

va afficher

Les Pommes bi-goût coûtent 1.69 € !

Insérer des variables dans l'ordre

 

Exemple :

Insérer des variables

nommées

Une utilisation plus poussée de format() est d'insérer des variables nommées à la place des tags.

La variable nommée "prod" remplacera le flag {prod}, sans tenir compte de l'ordre.

product = 'Pommes bi-goût'
price = 1.69

print('Les {prod} coûtent {prix} € !'.format(prix = price, prod = product))

va afficher

Les Pommes bi-goût coûtent 1.69 € !

Exemple :

Insérer des variables

formatées

Le dernier usage de format est d'insérer des variables formatées. Par exemple, un chiffre avec seulement 1 chiffre après la virgule.

Pour cela, on utilise un tag de la forme {nom_tag:format_souhaite}.

product = 'Pommes bi-goût'
price = 1.69

print('Les {prod} coûtent {prix:.1f} € !'.format(prod = product, prix = price))

va afficher

Les Pommes bi-goût coûtent 1.7 € !

Exemple :

Pour des infos plus poussées sur le formatage de chaînes en Python

Les opérateurs en

Python

Les opérateurs mathématiques

+ : Addition (et aussi concaténation pour les chaînes de caractères).

- : Soustraction

* : Multiplication

/ : Division

** : Puissance

% : Modulo

// : Quotient d'une division

x = 10
y = 3
x - y #7
x + y #13
x * y #30
x / y #3.333333...
x ** y #1000
x % y #1
x // y #3

Les opérateurs de comparaison

== : Égalité

< : Inférieur

> : Suppérieur

<= : Inférieur ou égal

>= : Supérieur ou égal

!= : Différent

x = 10
y = 3
x == y #False
x < y #False
x > y #True
x <= y #False
x >= y #True
x != y #False

Les opérateurs logiques

and : Et logique

or : Ou logique

is : Affirmation

not : Négation (inverseur)

in : appartient

x = True
y = False
z = (True, 22, 'string')
x and y #False
x or y #True
x is True #True
not x #False
x in z #True

Les conditions en

Python

Les instructions conditionnelles

En python on retrouve trois instructions conditionnelles : if, else et elif (Si, Sinon, Sinon Si).

Ces instructions s'utilisent de la façon suivante : instruction, condition à tester, ':'

if var1 < var2 :

if : Le bloc est exécuté si la condition est valide.

else : Le bloc est exécuté si le bloc précédent n'est pas executé.

elif : Le bloc est exécuté si le bloc précédent n'est pas executé et que la condition est valide.

Délimitation des blocs

Une particularité de Python est qu'il n'existe pas de délimiteur de blocs.

Pour délimiter des blocs logiques (conditions, boucles, etc.) Python utilise uniquement l'indentation (4 espaces) !

if ($var1 < $var2)
{
    echo '$var1 inférieure';
}
elseif ($var2 < $var1)
{
    echo '$var2 inférieure';
}
else
{
    echo '$var1 et $var2 égales';
}
if var1 < var2 :
    print('var1 inférieure')
elif var2 < var1 :
    print('var2 inférieure')
else :
    print('var1 et var2 égales')

Exemple en PHP

Exemple en Python

Les boucles en

Python

La boucle while

La boucle while permet de répéter un bloc d'instructions tant qu'une condition est validée.

Elle s'utilise sous la forme "while condition :".

while var1 < var2 :

Comme pour les blocs conditionnels, la délimitation du bloc se fait exclusivement par l'indentation.

La boucle for

Dans beaucoup de langages la boucle for sert à boucler tout en effectuant une action (souvent incrémenter une variable). Pas en Python !

En Python, la boucle for sert à répéter une action sur chaque élément d'un itérable (tuple, liste, dictionnaire, etc.). Comme une boucle foreach en PHP.

for element in liste :

Elle s'utilise en déclarant la variable dans laquelle on veux récupérer la valeur de l'élément et la liste à parcourir.

for key, element in liste :

Notez que vous pouvez aussi récupérer la clé de l'élément si vous en avez besoin. Pour un dictionnaire par exemple.

Contrôler parcours d'une boucle

Il peut parfois être utile de quitter une boucle prématurément ou de passer une itération de la boucle.

Pour cela on trouve deux instructions.

break pour quitter la boucle en cours.

continue pour passer à l'itération suivante.

for chiffre in [1, 2, 3] :
    if chiffre == 2 :
        continue
    print('Chiffre: ', chiffre)

#affichera 1 et 3
for chiffre in [1, 2, 3] :
    if chiffre == 2 :
        break
    print('Chiffre: ', chiffre)

#affichera 1

Exemples

Utiliser des fonctions avec Python

Une fonction c'est quoi ?

Une fonction est un bloc de code indépendant du reste du code et qui est chargé d’exécuter une action définie.

Ce bloc de code a la particularité de pouvoir être appelé par le programme à n'importe que moment.

Python dispose d'un certain nombre de fonctions intégrées au langage, comme print(). Mais il permet aussi au développeur de définir des fonctions personnalisées.

C'est un moyen d'écrire du code maintenable et facilement ré-utilisable sans avoir le ré-écrire.

Définir une fonction

Pour créer une fonction en Python, on utilise le mot clef def, puis le nom de la fonction à créer, et enfin la liste des variables attendues par la fonction.

def addition (chiffre1, chiffre2) :
    print(chiffre1 + chiffre2)

Par exemple, pour créer une fonction nommée addition et qui doit afficher le résultat de l'addition de deux variables, voici le code adapté.

Il ne peux pas exister deux fonctions avec le même nom.

Appeler une fonction

Pour appeler une fonction en Python, il suffit d'utiliser le nom de cette fonction et lui passer entre parenthèse les différents arguments.

addition(5, 10)

Pour utiliser la fonction précédente et afficher le résultat de l'addition de 5 et 10, nous utiliserons donc le code suivant.

Retourner une valeur

depuis une fonction

Pour retourner une valeur depuis une fonction, Python utilise le mot clef return.

Cela permet notamment de récupérer un résultat pour l'utiliser plus tard dans le programme.

Par exemple, si nous voulons que la fonction addition retourne le résultat plutôt que de l'afficher directement, nous pouvons écrire le code suivant.

def addition (chiffre1, chiffre2) :
    return chiffre1 + chiffre2

Utiliser des paramètres par défaut

Lors de la définition d'une fonction, il est possible de définir des valeurs par défaut pour des arguments qui seront utilisées si ces arguments ne sont pas passées à la fonction.

Pour cela, il suffit de rajouter "= la valeur par défaut" derrière l'argument.

Par exemple pour créer une fonction puissance qui par défaut met à la puissance 2.

def puissance (chiffre, puissance = 2) :
    return chiffre ** puissance

Passer des paramètres

nommés

Lors de l'appel d'une fonction il est possible d'utiliser des paramètres nommés, par exemple pour passer seulement certaines valeurs optionnelles à une fonction.

Pour cela, il suffit de passer nom_argument = valeur à la fonction lors de l'appel.

#Pour une fonction info avec 3 arg dont 2 optionnels
def info (arg1, arg2 = 'arg2', arg3 = 'arg3') :
    ...

info(arg1, arg3 = 'toto')

Utiliser des bibliothèques

avec Python

Une bibliothèque c'est quoi ?

Une bibliothèque c'est un ensemble de fonctions qui remplissent un objectif commun et qui peuvent facilement êtres intégrées au code.

L'intérêt d'une bibliothèque est de rendre le code plus modulaire, plus rapide à écrire et réduire le temps de maintenance nécessaire.

Python est particulièrement riche en bibliothèques et c'est une de ses grandes forces !

(Toi au fond, qui viens de dire "un endroit où on empreinte des livres"... tais-toi...)

Bibliothèques :

standard VS tierces

Bibliothèque standard

Bibliothèques tierces

Répond à des besoins classiques

Installée de base avec Python

Répond à des besoins particuliers

Doit-être installée manuellement

Utiliser une bibliothèque standard / tierce déjà installée

Pour pouvoir utiliser une lib installée (standard/tierce), vous devez dabord indiquer à Python que vous souhaitez l'utiliser.

Pour cela, Python utilise l'instruction import.

Cette fonction s'utilise très simplement en faisant "import nom_de_la_lib". Puis en utilisant "nom_de_la_lib.fonction()"

import os
print(os.name)

Utiliser une seule fonction/classe

de la bibliothèque

Python rend possible d'importer seulement une partie d'une bibliothèque (une seule classe/fonction).

 

Pour cela, Python utilise toujours l'instruction import, mais précédée de l'instruction from.

Plus précisément, il faut faire "from nom_lib import nom_fonction"

from hashlib import md5
md5('toto'.encode())

Gérer vos bibliothèques

tierces avec pip

Si vous avez besoin de bibliothèques particulières, vous allez devoir les installer vous même.

Il existe plusieurs façon d'installer des bibliothèques tierces, mais pip est une des plus pratique.

Pip est un gestionnaire de paquets, càd un programme permettant d'ajouter, retirer, mettre à jour, etc. des librairies utilisées dans un projet.

Installer pip

Pour pouvoir utiliser pip, nous allons commencer par l'installer s'il ne l'est pas déjà.

Pour cela, il vous suffit de passer par les gestionnaires de paquet Linux en utilisant la commande ci-dessous.

sudo apt-get install python-pip python3-pip

Installer une bibliothèque

avec pip

Pour installer une bibliothèque avec pip, vous devez savoir deux choses.

Quelle bibliothèque installer ?

Pour quelle version de Python ?

Trouver une bibliothèque

Pour trouver une bibliothèque, vous pouvez allez sur le Python Package Index : https://pypi.python.org/pypi

Le PyPI regroupe un très grand nombre de bibliothèques tierces pour Python et vous permet de les installer directement avec pip.

Enfin, PyPI propose aussi une barre de recherche, par exemple pour trouver une lib sur un sujet précis.

Installer une bibliothèque pour la bonne version de Python

Pip vous permet d'installer une bibliothèque pour différentes versions de Python. Vous devez faire attention à deux points.

Trouver une bibliothèque compatible avec votre version de Python.

Installer la bibliothèque depuis la bonne version de pip. En effet, un "pip2 install" installera pour Python 2, un pip3 pour Python 3.

Installer une bibliothèque

avec pip

Une fois que vous avez trouvé la bibliothèque qui vous convient, il ne nous reste plus qu'à l'installer.

Pour cela, il vous suffit de vous rendre sur la page PyPI de cette bibliothèque de copier son nom et de faire.

sudo pip3 install son_nom

Une fois l'installation terminée, vous pouvez l'utiliser comme toutes les autres lib avec import.

Note : Toujours utiliser pip avec sudo, comme ça ça installe le module pour TOUS les utilisateurs

Désinstaller une bibliothèque

avec pip

Si vous n'avez plus besoin d'une bibliothèque, vous pouvez la désinstaller.

Pour cela, rien de compliquer, faîtes juste

sudo pip3 uninstall son_nom

Mettre à jour une bibliothèque

avec pip

Au cours de votre travail, vous pourriez avoir besoin de récupérer la dernière version d'une lib, en la mettant à jour.

Pour cela, encore une fois c'est très simple, faîtes juste

sudo pip3 install son_nom --upgrade

Pour plus d'infos :

Sur les imports :

Sur pip :

Importer un fichier

en Python

Bibliothèque VS fichier

Nous avons vu qu'il était possible d'importer une bibliothèque en Python. De la même façon il est possible d'importer un simple fichier Python.

En fait, quand on importe un fichier Python, il va être plus ou moins automatiquement transformé en bibliothèque par Python !

Importer un fichier

Comme pour importer une bibliothèque, on utilise le mot clé import.

On utilise donc le mot clé import et le nom du fichier à importer sans le .py à la fin.

Exemple : Pour importer le fichier hello_world_func.py depuis import_file.py et appeler la fonction say_hello()

#!/usr/bin/env python3.5
#-*- coding: utf-8 -*-
import hello_world_func as hello
hello.say_hello()

Arborescence

import_file.py

Lire et écrire dans un fichier avec Python

Lire un fichier

En Python, il est possible de récupérer le contenu d'un fichier.

Pour cela, vous devez d'abord ouvrir le fichier, avec la commande open(), puis lire ce fichier avec read().

open(), prend en argument le chemin du fichier et le mode d'ouverture sous forme d'une lettre (Read, Write, Append, Read+write).

Exemple : Lire et afficher le contenu fichier hello_world.txt depuis read_file.py

#!/usr/bin/env python3.5
#-*- coding: utf-8 -*-
file = open('./hello_world.txt', 'r')
file_content = file.read()
print(file_content)

Écrire un fichier

En Python, il est aussi possible de créer et d'écrire dans un fichier.

Pour cela, vous devez d'abord ouvrir le fichier, avec la commande open(), puis écrire avec write() et enfin fermer avec close().

write(), prend en argument le texte à écrire.

Exemple : Écrire "Hello World !" dans le fichier tmp.txt depuis le script write_file.py

#!/usr/bin/env python3.5
#-*- coding: utf-8 -*-
file = open('./tmp.txt', 'w')
file.write('Hello World !')
file.close()

PS : Attention, vous devez avoir les droits d'écriture dans le dossier !

Exécuter une commande système en Python

Passer une commande au système ? Pourquoi ?

Au delà de ses capacités propres, Python vous permet de demander à Linux d'exécuter une commande.

Par exemple, si vous voulez que le serveur joue un fichier son au format .wav suite à une action en Python, vous pouvez demander au système de démarrer le logiciel aplay qui le fera pour vous !

Il est parfois plus simple de passer des commandes système, par exemple pour s'interfacer avec un logiciel.

Passer une commande asynchrone.

Deux façons de passer des commandes : Synchrone & Asynchrone.

Commande asynchrone = Python n'attend pas la fin + ne dispose pas du retour.

On utilise os.popen() avec la commande en argument. Il retourne une variable permettant de lire le résultat de la commande avec read().

#!/usr/bin/env python3.5
#-*- coding: utf-8 -*-
import os
command = os.popen('ls ./')
command_return = command.read()
print(command_return)

Passer une commande synchrone.

Commande synchrone = Python attend la fin + dispose du retour.

On utilise os.system() avec la commande en argument et il va directement afficher le retour.

#!/usr/bin/env python3.5
#-*- coding: utf-8 -*-
import os
os.system('touch ./file.tmp')

Utiliser une base de données avec Python

Une base de données

comment et pourquoi ?

Pour stocker des informations après la fin d'un script Python, le moyen le plus pratique est la base de données.

Python supporte de nombreuses bases de données, mais la plus classique reste MySQL (installée au début du cours).

Il existe plein d'autres bases, mais MySQL est largement suffisante pour nos besoins et TRÈS documentée.

Installer les drivers

nécessaires

Pour pouvoir utiliser MySQL depuis Python vous devez avoir installer un certains nombres de drivers.

Depuis Python 3 l'installation est assez réduite, il vous suffit de lancer la commande ci-dessous.

sudo apt-get install python3-mysql.connector

Créer la base de données

Avant de pouvoir utiliser notre base de données depuis Python, nous devons d'abord la créer.

 

Nous allons créer une base de données nommée "cours_iot_introduction_python", et contenant une table "user" avec les champs id, firstname, lastname et age.

1. Téléchargez le fichier create_database.sql

http://bit.ly/2Epa9iB

2. Exécuter le fichier dans MySQL.

mysql -u root -p < create_database.sql

Se connecter à la base

de données

La première étape pour utiliser la base de données est de nous connecter dessus depuis Python.

Pour cela, on utilise la fonction connect() de mysql.connector et cursor().

#!/usr/bin/env python3.5
#-*- coding: utf-8 -*-
import mysql.connector
mysql_connection = mysql.connector.connect(host = 'localhost', user = 'root', password = 'your_password', database = 'cours_iot_introduction_python')
mysql_cursor = mysql_connection.cursor()

Récupérer les données

d'une table

La seconde étape va être de récupérer le contenu d'une table.

On utilise la fonction execute() du curseur pour exécuter une requête puis fetchall() pour récupérer les données. Puis une boucle for pour les afficher.

mysql_cursor.execute('SELECT * FROM user')
users = mysql_cursor.fetchall()

for user in users :
    print('id: {}, firstname: {}, lastname: {}, age: {}'.format(user[0], user[1], user[2], user[3]))

Récupérer les données

d'une table

La seconde étape va être de récupérer le contenu d'une table.

On utilise la fonction execute() du curseur pour exécuter une requête puis fetchall() pour récupérer les données. Puis une boucle for pour les afficher.

mysql_cursor.execute('SELECT * FROM user')
users = mysql_cursor.fetchall()

for user in users :
    print('id: {}, firstname: {}, lastname: {}, age: {}'.format(user[0], user[1], user[2], user[3]))

Insérer des données

dans une table

La dernière étape va être d'insérer une nouvelle ligne dans la base de données.

query_data = {'firstname': 'Elisabeth', 'lastname' : 'Tessier', 'age' : 80} 
mysql_cursor.execute('INSERT INTO user (firstname, lastname, age) VALUES (\'{firstname}\', \'{lastname}\', {age})'.format(**query_data))
mysql_connection.commit()

On utilise aussi la fonction execute() puis la fonction commit() pour valider les écriture en base.

Se protéger contre les injections SQL

Ne faîtes pas confiance aux utilisateurs. Protégez vos variables et vos requêtes contre les injections SQL.

query_data = {'firstname': 'Elisabeth', 'lastname' : 'Tessier', 'age' : 80} 
mysql_cursor.execute('INSERT INTO user (firstname, lastname, age) VALUES (%(firstname)s, %(lastname)s, %(age)s)', query_data)

Pour ça, on insert pas directement la variable dans la requête. À la place on met %(clef)s dans la requête et on passe les données sous forme d'un dictionnaire avec les clefs à execute(). Comme PDO pour PHP.

TP : Création d'un script qui récupère en temps réel le prix d'une crypto

Pré-requis

Toutes les données doivent venir de cryptocompare.com et vous devez utilisez une librairie tierce pour vous connecter à leur API.

Que fais le script ?

1. Demande à l'utilisateur la crypto dont il veut le prix ou s'il veut la liste des cryptos disponibles.

2. Cherche la liste des cryptos et les affiches. Ou cherche le prix via l'API de cryptocompare.com et l'affiche

3. Retour au n°1

Rendu

Prochaine séance

Sous forme de repo GitHub

Lien du GitHub par mail

Sujet du mail : Cours IoT - TP crypto

Quelques bonnes adresses sur Python

Les bases :

Notions avancées & informatique en général :

Bonnes adresses Python & autres

Sam & Max

Meilleur blog de dev français, meilleure réflexion sur l'industrie informatique, meilleure explication de Python.

 

sametmax.com : du code, du cul !

Questions ?