Использование выражения DELETE
В предыдущей главе мы поняли, что такое Updateвыражение делает. Следующее выражение, которое мы собираемся изучить, этоDelete.
Операция удаления может быть достигнута путем запуска метода delete () для объекта целевой таблицы, как указано в следующем заявлении:
stmt = students.delete()
В случае таблицы студентов, приведенная выше строка кода создает выражение SQL следующим образом:
'DELETE FROM students'
Однако это приведет к удалению всех строк в таблице студентов. Обычно запрос DELETE связан с логическим выражением, указанным в предложении WHERE. В следующем заявлении показано, где параметр -
stmt = students.delete().where(students.c.id > 2)
Результирующее выражение SQL будет иметь связанный параметр, который будет заменен во время выполнения при выполнении оператора.
'DELETE FROM students WHERE students.id > :id_1'
В следующем примере кода будут удалены эти строки из таблицы студентов с фамилией «Ханна» -
from sqlalchemy.sql.expression import update
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.delete().where(students.c.lastname == 'Khanna')
conn.execute(stmt)
s = students.select()
conn.execute(s).fetchall()
Чтобы проверить результат, обновите представление данных таблицы студентов в SQLiteStudio.