oujood.com

Comment inserer des données dans une table mysql en python ?

MySQL est un système de gestion de bases de données relationnelles , tandis que le langage de requête structuré SQL est le langage utilisé pour manipuler MySQL à l'aide de commandes pour créer, insérer, mettre à jour et supprimer les données des bases de données
Les commandes SQL sont insensibles à la casse, c'est-à-dire que CREATE et create signifient la même commande.
Avant d'insérer des données dans notre base de données, nous devons créer une table. Pour ce faire, reportez-vous à Python : MySQL Créer une table.

chercher |

Insérer des données dans une table MySQL en utilisant python

La méthode execute() (invoquée sur l'objet curseur) accepte une requête comme paramètre et exécute la requête donnée.
Pour insérer des données, vous devez lui passer en paramètre l'instruction MySQL INSERT dont la syntaxe est la suivante:

curseur.execute("""INSERT INTO NOM_TABLE(COL1, COL2, ... ,COLn)
VALUES (VALEUR1, VALEUR2, ..., VALEURn)""")

Pour insérer des données dans une table dans MySQL en utilisant python

importez le module mysql.connector.
Créez un objet de connexion en utilisant la méthode mysql.connector.connect(), en lui passant comme paramètres le nom d'utilisateur, le mot de passe, l'hôte ( défaut : localhost) et, la base de données.
Créez un objet curseur en invoquant la méthode cursor() sur l'objet de connexion créé ci-dessus.
Ensuite, exécutez l'instruction INSERT en la passant comme paramètre à la méthode execute().

Exemple L'exemple suivant exécute l'instruction SQL INSERT afin d'insérer un enregistrement dans la table EMPLOYEE que nous avons créé dans le chapitre précédent:

  Copier le code

# Importation des module nécessaires
import mysql.connector

#Créer une connexion à la base de données
conn = mysql.connector.connect(
host = "localhost",
user = "votre nom utilisateur",
passwd = "votre mot de passe",
database="oujood_py"
)

# préparation d'un objet curseur
curseurObjet = conn.cursor()

# Préparation de la requête SQL pour INSÉRER
# un enregistrement dans la base de données.
requete_sql = """INSERT INTO EMPLOYEE(MATRICULE, PRENOM, NOM, AGE, SEXE, REVENU)
   VALUES ('101', 'Marc', 'Mohan', 45, 'M', 2000)"""

   #  Exécution de la commande SQL
curseurObjet.execute(requete_sql)
conn.commit()

sql = '''SELECT * from EMPLOYEE'''

curseurObjet.execute(sql)

#Affichage du contenu de la table:
result = curseurObjet.fetchall();
print(result)

conn.close()

Important : Remarquez l'instruction : conn.commit(). Elle est nécessaire pour effectuer les modifications, sinon aucune modification n'est apportée à la table.

Avec ce code on va ajouter les données dans la table un enregistremlent à la fois.

Remarquez aussi la méthode fetchall() qui sert à récupérer les données de la table pour pouvoir les utiliser (par exemple les afficher comme dans notre exemple).
Nous verrons cette méthode plus en détail dans le chapitre suivant

Avant de passer à la section suivante, sachez que pour insérer le 1er enregistrement il faut obligatoirement donner une valeur à la colonne clé primaire, ce qui donne une valeur de début à l'auto-incrémentation. Si vous ne le faites pas vous aurez une erreur.

mais on peut ajouter plusieurs enregistrement en une seule fois comme suit

Insérer plusieurs enregistrements dans une table de données

Pour insérer plusieurs lignes dans une table, on utilise la méthode executemany().

Le deuxième paramètre de la méthode executemany() est une liste de tuples, contenant les données que vous voulez insérer :
Exemple: L'exemple suivant exécute l'instruction SQL INSERT pour insérer plusieurs enregistrements dans la table EMPLOYEE que nous avons créé lors du chapitre précédent:

  Copier le code

# Importation des module nécessaires
import mysql.connector

#Créer une connexion à la base de données
conn = mysql.connector.connect(
host = "localhost",
user = "votre nom utilisateur",
passwd = "votre mot de passe",
database="oujood_py"
)

# préparation d'un objet curseur
curseurObjet = conn.cursor()

# Préparation de la requête SQL pour INSÉRER
# un enregistrement dans la base de données.
requete_sql = "INSERT INTO EMPLOYEE(PRENOM, NOM, AGE, SEXE, REVENU) VALUES (%s, %s, %s, %s, %s)"
valeur = [ ('Marcus', 'Mohanus', 40, 'M', 2010),
  ('Peter', 'Neel', 43, 'M', 2100),
  ('Amy', 'Barik', 35, 'M',1959),
  ('Hanane', 'Moufid', 32, 'F',1967),
  ('Michael', 'Saha', 54, 'M',3215),
  ('Sandy', 'Anirban', 33, 'F',2156),
  ('Betty', 'Kumar', 33, 'M',1950),
  ('Richard', 'Darik', 37, 'M',1960),
  ('Susan', 'Das', 45, 'F',2000)]
   #  Exécution de la commande SQL
curseurObjet.executemany(requete_sql, valeur)
conn.commit()
sql = '''SELECT * from EMPLOYEE'''

curseurObjet.execute(sql)

#Affichage du contenu de la table:
result = curseurObjet.fetchall();
print(result)

conn.close()

Comme notre table n'est pas vide, puisqu'elle contient déjà l'enregistrement ajouté lors du premier exemple. Nous n'avons pas besoin de fixer de valeurs pour la clé primaire (MATRICULE) vu qu'elle s'auto-incrémente

Insertion dynamique de valeurs

Vous pouvez également utiliser "%s" à la place des valeurs dans la requête INSERT de MySQL et leur passer des valeurs sous forme de listes, comme dans l'exemple ci-dessus.

Et celà est valable aussi bien pour l'insértion multiple que unique.

Vous pouvez obtenir l'identifiant de la ligne que vous venez d'insérer en demandant à l'objet curseur.

Exemple: Obtenir l'identifiant inséré


  Copier le code

# Importation des module nécessaires
import mysql.connector

#Créer une connexion à la base de données
conn = mysql.connector.connect(
host = "localhost",
user = "votre nom utilisateur",
passwd = "votre mot de passe",
database="oujood_py"
)

# préparation d'un objet curseur
curseurObjet = conn.cursor()

# Préparation de la requête SQL pour INSÉRER
# un enregistrement dans la base de données.
requete_sql = "INSERT INTO EMPLOYEE(PRENOM, NOM, AGE, SEXE, REVENU) VALUES (%s, %s, %s, %s, %s)"
valeur = ('Michelle', 'Hamond', 40, 'M', 2010)
   #  Exécution de la commande SQL
curseurObjet.execute(requete_sql, valeur)
conn.commit()
print("1 enregistrement inséré, MATRICULE: ", curseurObjet.lastrowid)

conn.close()

Remarque : si vous insérez plus d'une ligne, l'identifiant de la dernière ligne insérée est renvoyé.



Voir aussi nos tutoriel :

:first-child

Ajoute un style à un élément qui est le premier enfant d'un autre élément

fonction chop, chop

Alias de rtrim

introduction XML

Introduction XML