Учебники

SQLAlchemy ORM — Использование запросов

Все операторы SELECT, сгенерированные SQLAlchemy ORM, создаются объектом Query. Он обеспечивает генеративный интерфейс, поэтому последовательные вызовы возвращают новый объект Query, копию первого с дополнительными критериями и параметрами, связанными с ним.

Объекты запросов изначально создаются с использованием метода query () Session следующим образом:

q = session.query(mapped class)

Следующее утверждение также эквивалентно приведенному выше утверждению —

q = Query(mappedClass, session)

Объект запроса имеет метод all (), который возвращает набор результатов в виде списка объектов. Если мы выполним это на столе наших клиентов —

result = session.query(Customers).all()

Это утверждение фактически эквивалентно следующему выражению SQL —

SELECT customers.id 
AS customers_id, customers.name 
AS customers_name, customers.address 
AS customers_address, customers.email 
AS customers_email
FROM customers

Объект результата можно просмотреть с помощью цикла For, как показано ниже, чтобы получить все записи в базовой таблице клиентов. Вот полный код для отображения всех записей в таблице «Клиенты» —

from sqlalchemy import Column, Integer, String
from sqlalchemy import create_engine
engine = create_engine('sqlite:///sales.db', echo = True)
from sqlalchemy.ext.declarative import declarative_base
Base = declarative_base()

class Customers(Base):
   __tablename__ = 'customers'
   id = Column(Integer, primary_key =  True)
   name = Column(String)

   address = Column(String)
   email = Column(String)

from sqlalchemy.orm import sessionmaker
Session = sessionmaker(bind = engine)
session = Session()
result = session.query(Customers).all()

for row in result:
   print ("Name: ",row.name, "Address:",row.address, "Email:",row.email)

Консоль Python показывает список записей, как показано ниже —

Name: Ravi Kumar Address: Station Road Nanded Email: ravi@gmail.com
Name: Komal Pande Address: Koti, Hyderabad Email: komal@gmail.com
Name: Rajender Nath Address: Sector 40, Gurgaon Email: nath@gmail.com
Name: S.M.Krishna Address: Budhwar Peth, Pune Email: smk@gmail.com

Объект Query также имеет следующие полезные методы:

add_columns ()

Он добавляет одно или несколько выражений столбцов в список возвращаемых столбцов результатов.

add_entity ()

Он добавляет сопоставленную сущность в список возвращаемых столбцов результатов.

кол()

Он возвращает количество строк, которые мог бы вернуть этот запрос.

удалять()

Он выполняет массовый запрос на удаление. Удаляет строки, соответствующие этому запросу, из базы данных.

различны ()

Он применяет предложение DISTINCT к запросу и возвращает вновь полученный Запрос.

фильтр()

Он применяет данный критерий фильтрации к копии этого запроса, используя выражения SQL.

первый()

Возвращает первый результат этого запроса или None, если результат не содержит строки.

получить()

Он возвращает экземпляр на основе заданного идентификатора первичного ключа, предоставляя прямой доступ к карте идентификации сеанса-владельца.

группа по()

Он применяет один или несколько критериев GROUP BY к запросу и возвращает вновь полученный Запрос

присоединиться()

Он создает SQL JOIN по критерию этого объекта Query и применяет его генеративно, возвращая вновь полученный Query.

один()

Он возвращает ровно один результат или вызывает исключение.

Сортировать по()

Он применяет один или несколько критериев ORDER BY к запросу и возвращает вновь полученный Запрос.

Обновить()

Он выполняет массовый запрос на обновление и обновляет строки, соответствующие этому запросу, в базе данных.