Utilisation de l'expression UPDATE
le update() sur l'objet table cible construit une expression SQL UPDATE équivalente.
table.update().where(conditions).values(SET expressions)
le values()La méthode sur l'objet de mise à jour résultant est utilisée pour spécifier les conditions SET de UPDATE. Si aucune valeur n'est définie, les conditions SET sont déterminées à partir des paramètres passés à l'instruction pendant l'exécution et / ou la compilation de l'instruction.
La clause where est une expression facultative décrivant la condition WHERE de l'instruction UPDATE.
L'extrait de code suivant change la valeur de la colonne «nom» de «Khanna» à «Kapoor» dans la table des étudiants
stmt = students.update().where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')
L'objet stmt est un objet de mise à jour qui se traduit par -
'UPDATE students SET lastname = :lastname WHERE students.lastname = :lastname_1'
Le paramètre lié lastname_1 sera remplacé lorsque execute()méthode est appelée. Le code de mise à jour complet est donné ci-dessous -
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String
engine = create_engine('sqlite:///college.db', echo = True)
meta = MetaData()
students = Table(
'students',
meta,
Column('id', Integer, primary_key = True),
Column('name', String),
Column('lastname', String),
)
conn = engine.connect()
stmt=students.update().where(students.c.lastname=='Khanna').values(lastname='Kapoor')
conn.execute(stmt)
s = students.select()
conn.execute(s).fetchall()
Le code ci-dessus affiche la sortie suivante avec la deuxième ligne montrant l'effet de l'opération de mise à jour comme dans la capture d'écran donnée -
[
(1, 'Ravi', 'Kapoor'),
(2, 'Rajiv', 'Kapoor'),
(3, 'Komal', 'Bhandari'),
(4, 'Abdul', 'Sattar'),
(5, 'Priya', 'Rajhans')
]
![](https://assets.edu.lat/sqlalchemy/images/update_operation.jpg)
Notez que des fonctionnalités similaires peuvent également être obtenues en utilisant update() fonction dans le module sqlalchemy.sql.expression comme indiqué ci-dessous -
from sqlalchemy.sql.expression import update
stmt = update(students).where(students.c.lastname == 'Khanna').values(lastname = 'Kapoor')