Выборка данных из таблицы с помощью SQLAlchemy
Отличная работа! Пришло время создать ваш первый оператор выборки с помощью SQLAlchemy. SQLAlchemy предлагает удобный «питонический» способ взаимодействия с базами данных. В прошлом упражнении вы обращались к базе данных напрямую через SQL. В SQLAlchemy вы будете работать через объект Table, а SQLAlchemy самостоятельно преобразует ваш запрос в подходящий SQL-оператор. Таким образом, вам не нужно разбираться в различиях между диалектами SQL, такими как MySQL или PostgreSQL: питонический фреймворк SQLAlchemy упрощает рабочий процесс и делает работу с данными более эффективной. Именно поэтому его стоит изучить, даже если вы уже знакомы с традиционным SQL.
В этом упражнении вы снова создадите запрос для получения всех записей из таблицы census. На этот раз вы воспользуетесь функцией select() из модуля sqlalchemy. Эта функция принимает обязательный аргумент — список таблиц или столбцов. Например: select([my_table]).
Кроме того, вы получите лишь несколько записей из ResultProxy с помощью метода .fetchmany(), передав аргумент size с нужным количеством записей.
Table и MetaData уже импортированы. Метаданные доступны как metadata, а соединение с базой данных — как connection.
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Импортируйте
selectиз модуляsqlalchemy. - Выполните отражение таблицы
census. Этот код уже написан за вас. - Создайте запрос с помощью функции
select(), чтобы получить все записи из таблицыcensus. Для этого передайте вselect()список с одним элементом:census. - Выведите
stmtна экран, чтобы увидеть сформированный SQL-запрос. Этот код уже написан за вас. - Получите 10 записей из таблицы
censusи сохраните их вresults. Для этого:- Вызовите метод
.execute()на объектеconnection, передавstmtв качестве аргумента, чтобы получить ResultProxy. - Вызовите
.fetchmany()с нужным значением аргументаsizeнаconnection.execute(stmt), чтобы получить ResultSet.
- Вызовите метод
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Import select
from ____ import ____
# Reflect census table via engine: census
census = Table('census', metadata, autoload=True, autoload_with=engine)
# Build select statement for census table: stmt
stmt = ____
# Print the emitted statement to see the SQL string
print(stmt)
# Execute the statement on connection and fetch 10 records: result
results = ____.____(____).____(size=___)
# Execute the statement and print the results
print(results)