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

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

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

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: [email protected]
Name: Komal Pande Address: Koti, Hyderabad Email: [email protected]
Name: Rajender Nath Address: Sector 40, Gurgaon Email: [email protected]
Name: S.M.Krishna Address: Budhwar Peth, Pune Email: [email protected]

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

Sr. No. Метод и описание
1

add_columns()

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

2

add_entity()

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

3

count()

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

4

delete()

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

5

distinct()

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

6

filter()

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

7

first()

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

8

get()

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

9

group_by()

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

10

join()

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

11

one()

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

12

order_by()

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

13

update()

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