Base de données MySQL

Les jointures Python / MySQL

Les jointures sont utilisés pour récupérer les données de plusieurs tables. Une jointure MySQL est effectuée chaque fois que deux tables ou plus sont jointes dans une instruction SQL.
 
[wx_adsense]  
Il existe différents types de jointures MySQL:

  • MySQL INNER JOIN (ou parfois appelé JOIN; une simple jointure)
  • MySQL LEFT OUTER JOIN (ou parfois appelé LEFT JOIN)
  • MySQL RIGHT OUTER JOIN (ou parfois appelé RIGHT JOIN)

Considérez que vous avez une table « Employee » et une table « Holidays »:
 

Table : Holidays
+------+--------+------------+--------+---------------+
|  id  | empId  |    date    |  days  |     reason    |
+------+--------+------------+--------+---------------+
|   1  |    1   | 01/07/2020 |   10   |  Annual Leave |
|   2  |    2   | 25/09/2020 |   5    |  Hospital     |
|   3  |    3   | 30/08/2020 |   11   |  Have a baby  |
+------+--------+------------+--------+---------------+

 

Table : Employee
+------+--------+------------+
|  id  |  name  |   address  |
+------+--------+------------+
|   1  | Alex   | 01/07/2020 |
|   2  | Thomas | 25/09/2020 |
|   3  | Bob    | 30/08/2020 |
+------+--------+------------+

Ces deux tables peuvent être jointes en utilisant le champ empId de la table : holidays et le champ id de la table : Employee.
 
[wx_adsense]  

Exemple:

Rejoignez la table : Employee et la table : holidays pour voir la raison de départ pour chaque employé:

# -*- coding: utf-8 -*-
import mysql.connector

#connexion au base de données
db = mysql.connector.connect(
  host = "localhost",
  user = "root",
  password = "",
  database = "my_db"
)

#créer un curseur de base de données pour effectuer des opérations SQL
cur = db.cursor()

sql = "SELECT employee.name, holidays.reason \
       FROM employee \
       INNER JOIN holidays ON employee.id = holidays.empId"
	   
#exécuter le curseur avec la méthode execute() et transmis la requête SQL
cur.execute(sql)

#récupèrer toutes les lignes de la dernière instruction exécutée.
res = cur.fetchall()

for line in res:
  print(line)

Sortie:

('Alex', 'Annual Leave')
('Thomas', 'Hospital')
('Bob', 'Have a baby')

 
[wx_amazon]

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *