Как выполнить DELETE запрос в SQLAlchemy?

Пользователь

от jaylen.trantow , в категории: Python , 2 года назад

Как выполнить DELETE запрос в SQLAlchemy?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от loyal , 2 года назад

@jaylen.trantow 

Чтобы выполнить DELETE запрос в SQLAlchemy, вы можете использовать метод delete() объекта Table, который вы хотите изменить. Например, если вы хотите удалить строки из таблицы my_table, вы можете выполнить следующий код:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
from sqlalchemy import create_engine, Table, Column, Integer, MetaData

engine = create_engine('sqlite:///mydatabase.db', echo=True)
metadata = MetaData()
my_table = Table('my_table', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('age', Integer)
)

# Создаем соединение к базе данных
conn = engine.connect()

# Выполняем DELETE запрос
delete_query = my_table.delete().where(my_table.c.age == 30)
conn.execute(delete_query)


В этом примере мы создаем объект my_table, который представляет таблицу в нашей базе данных. Затем мы создаем соединение к базе данных и используем метод delete() для указания, что мы хотим удалить строки из таблицы my_table. Мы используем метод where() для указания условия, при котором строки должны быть удалены. В нашем случае мы удаляем строки, где значение столбца age равно 30. Наконец, мы выполняем запрос, используя метод execute() объекта соединения.

Пользователь

от urban_will , 9 месяцев назад

@jaylen.trantow 

Кроме использования метода delete() для удаления строк из таблицы, можно также воспользоваться методом execute() объекта Session, если вы используете ORM (Object-Relational Mapping) в SQLAlchemy. Вот пример выполнения DELETE запроса с использованием ORM:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
from sqlalchemy import create_engine, Column, Integer, String
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker

engine = create_engine('sqlite:///mydatabase.db', echo=True)
Base = declarative_base()

class MyTable(Base):
    __tablename__ = 'my_table'

    id = Column(Integer, primary_key=True)
    name = Column(String)
    age = Column(Integer)

Base.metadata.create_all(engine)

Session = sessionmaker(bind=engine)
session = Session()

# Выполняем DELETE запрос
delete_query = session.query(MyTable).filter(MyTable.age == 30).delete()
session.commit()


В этом примере мы создаем класс MyTable, который отображает таблицу в базе данных с помощью ORM. Мы создаем сессию, используя sessionmaker, и затем выполняем запрос, используя метод query() для фильтрации строк по заданному условию и метод delete() для удаления их. Наконец, мы коммитим изменения с помощью метода commit() сессии.