Rejoindre MySQL en Python

Combiner deux ou plusieurs tables

Vous pouvez utiliser l'instruction JOIN pour combiner les lignes de deux ou plusieurs tables en fonction de leurs colonnes associées.

Supposons que vous ayez les tables "users" et "products" :

users

{ id: 1, name: 'John', fav: 154},
{ id: 2, name: 'Peter', fav: 154},
{ id: 3, name: 'Amy', fav: 155},
{ id: 4, name: 'Hannah', fav:},
{ id: 5, name: 'Michael', fav:}

products

{ id: 154, name: 'Chocolate Heaven' },
{ id: 155, name: 'Tasty Lemons' },
{ id: 156, name: 'Vanilla Dreams' }

Il est possible d'utiliser les champs de users fav Champs et products id Champs pour combiner ces deux tables.

Exemple

Combiner les utilisateurs et les produits, pour voir les produits préférés des utilisateurs :

import mysql.connector
mydb = mysql.connector.connect(
  host="localhost",
  user="yourusername",
  passwd="yourpassword",
  database="mydatabase"
)
mycursor = mydb.cursor()
sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  FROM users \

  JOIN INNER products ON users.fav = products.id"
mycursor.execute(sql)
myresult = mycursor.fetchall()
for x in myresult:
  print(x)

Exécution de l'exemple

Remarque :Vous pouvez utiliser JOIN au lieu de INNER JOIN. Vous obtiendrez le même résultat.

JOIN LEFT

Dans l'exemple précédent, Hannah et Michael sont exclus des résultats car INNER JOIN ne montre que les enregistrements correspondants.

Si vous souhaitez afficher tous les utilisateurs, même s'ils n'ont pas de produits préférés, utilisez l'expression LEFT JOIN :

Exemple

Sélectionnez tous les utilisateurs et leurs produits préférés :

sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  FROM users \

  JOIN LEFT products ON users.fav = products.id"

Exécution de l'exemple

JOIN RIGHT

Si vous souhaitez retourner tous les produits ainsi que les utilisateurs qui les aiment, même s'il n'y a pas d'utilisateur qui aime ces produits, utilisez l'expression RIGHT JOIN :

Exemple

Sélectionnez tous les produits ainsi que les utilisateurs qui les aiment :

sql = "SELECT \

  users.name AS user, \

  products.name AS favorite \

  FROM users \

  JOIN RIGHT products ON users.fav = products.id"

Exécution de l'exemple

Remarque :Hannah et Michael, qui ne sont intéressés par aucun produit, ne sont pas inclus dans les résultats.