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() Он выполняет запрос массового обновления и обновляет строки, соответствующие этому запросу, в базе данных. |