Python SQLite - Table de mise à jour

UPDATE L'opération sur n'importe quelle base de données implique de modifier les valeurs d'un ou plusieurs enregistrements d'une table, qui sont déjà disponibles dans la base de données. Vous pouvez mettre à jour les valeurs des enregistrements existants dans SQLite à l'aide de l'instruction UPDATE.

Pour mettre à jour des lignes spécifiques, vous devez utiliser la clause WHERE avec elle.

Syntaxe

Voici la syntaxe de l'instruction UPDATE dans SQLite -

UPDATE table_name
SET column1 = value1, column2 = value2...., columnN = valueN
WHERE [condition];

Exemple

Supposons que nous ayons créé une table avec le nom CRICKETERS en utilisant la requête suivante -

sqlite> CREATE TABLE CRICKETERS (
   First_Name VARCHAR(255),
   Last_Name VARCHAR(255),
   Age int,
   Place_Of_Birth VARCHAR(255),
   Country VARCHAR(255)
);
sqlite>

Et si nous y avons inséré 5 enregistrements en utilisant des instructions INSERT comme -

sqlite> insert into CRICKETERS values('Shikhar', 'Dhawan', 33, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Jonathan', 'Trott', 38, 'CapeTown', 'SouthAfrica');
sqlite> insert into CRICKETERS values('Kumara', 'Sangakkara', 41, 'Matale', 'Srilanka');
sqlite> insert into CRICKETERS values('Virat', 'Kohli', 30, 'Delhi', 'India');
sqlite> insert into CRICKETERS values('Rohit', 'Sharma', 32, 'Nagpur', 'India');
sqlite>

La déclaration suivante modifie l'âge du joueur de cricket, dont le prénom est Shikhar -

sqlite> UPDATE CRICKETERS SET AGE = 45 WHERE FIRST_NAME = 'Shikhar' ;
sqlite>

Si vous récupérez l'enregistrement dont FIRST_NAME est Shikhar, vous constatez que la valeur d'âge a été modifiée à 45 -

sqlite> SELECT * FROM CRICKETERS WHERE FIRST_NAME = 'Shikhar';
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   --------
Shikhar      Dhawan       45     Delhi        India
sqlite>

Si vous n'avez pas utilisé la clause WHERE, les valeurs de tous les enregistrements seront mises à jour. L'instruction UPDATE suivante augmente l'âge de tous les enregistrements de la table CRICKETERS de 1 -

sqlite> UPDATE CRICKETERS SET AGE = AGE+1;
sqlite>

Si vous récupérez le contenu de la table à l'aide de la commande SELECT, vous pouvez voir les valeurs mises à jour comme -

sqlite> SELECT * FROM CRICKETERS;
First_Name   Last_Name    Age    Place_Of_B   Country
----------   ----------   ----   ----------   -------------
Shikhar      Dhawan       46     Delhi        India
Jonathan     Trott        39     CapeTown     SouthAfrica
Kumara       Sangakkara   42     Matale       Srilanka
Virat        Kohli        31     Delhi        India
Rohit        Sharma       33     Nagpur       India
sqlite>

Mettre à jour des enregistrements existants à l'aide de Python

Pour ajouter des enregistrements à une table existante dans la base de données SQLite -

  • Importez le package sqlite3.

  • Créez un objet de connexion à l'aide de la méthode connect () en lui passant le nom de la base de données comme paramètre.

  • le cursor()renvoie un objet curseur à l'aide duquel vous pouvez communiquer avec SQLite3. Créez un objet curseur en invoquant l'objet curseur () sur l'objet Connection (créé ci-dessus).

  • Ensuite, appelez la méthode execute () sur l'objet curseur, en lui passant une instruction UPDATE comme paramètre.

Exemple

En suivant l'exemple Python, crée une table avec le nom EMPLOYEE, y insère 5 enregistrements et augmente l'âge de tous les employés masculins de 1 -

import sqlite3
#Connecting to sqlite
conn = sqlite3.connect('example.db')

#Creating a cursor object using the cursor() method
cursor = conn.cursor()

#Doping EMPLOYEE table if already exists.
cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

#Creating table as per requirement
sql ='''CREATE TABLE EMPLOYEE(
   FIRST_NAME CHAR(20) NOT NULL,
   LAST_NAME CHAR(20),
   AGE INT,
   SEX CHAR(1),
   INCOME FLOAT
)'''
cursor.execute(sql)

#Inserting data
cursor.execute('''INSERT INTO EMPLOYEE(FIRST_NAME, LAST_NAME, AGE, SEX, INCOME)
VALUES ('Ramya', 'Rama priya', 27, 'F', 9000),
   ('Vinay', 'Battacharya', 20, 'M', 6000), 
   ('Sharukh', 'Sheik', 25, 'M', 8300), 
   ('Sarmista', 'Sharma', 26, 'F', 10000),
   ('Tripthi', 'Mishra', 24, 'F', 6000)''')
conn.commit()

#Fetching all the rows before the update
print("Contents of the Employee table: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())

#Updating the records
sql = '''UPDATE EMPLOYEE SET AGE=AGE+1 WHERE SEX = 'M' '''
cursor.execute(sql)
print("Table updated...... ")

#Fetching all the rows after the update
print("Contents of the Employee table after the update operation: ")
cursor.execute('''SELECT * from EMPLOYEE''')
print(cursor.fetchall())

#Commit your changes in the database
conn.commit()

#Closing the connection
conn.close()

Production

Contents of the Employee table:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Vinay', 'Battacharya', 20, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 25, 'M', 8300.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]
Table updated......
Contents of the Employee table after the update operation:
[
   ('Ramya', 'Rama priya', 27, 'F', 9000.0), 
   ('Vinay', 'Battacharya', 21, 'M', 6000.0), 
   ('Sharukh', 'Sheik', 26, 'M', 8300.0), 
   ('Sarmista', 'Sharma', 26, 'F', 10000.0), 
   ('Tripthi', 'Mishra', 24, 'F', 6000.0)
]