Вибір даних з Table за допомогою SQLAlchemy
Чудова робота! Тепер час зібрати свій перший вираз select у SQLAlchemy. SQLAlchemy надає зручний «пайтонівський» спосіб взаємодії з базами даних. У попередній вправі, використовуючи «сирий» SQL, ви зверталися до бази даних безпосередньо. Коли ж ви працюєте з SQLAlchemy, ви взаємодієте через об'єкт Table, а SQLAlchemy подбає про переклад вашого запиту у відповідну SQL-інструкцію. Завдяки цьому вам не доведеться зважати на відмінності між діалектами традиційного SQL, як-от MySQL чи PostgreSQL, — ви скористаєтеся пайтонівським фреймворком SQLAlchemy, щоб спростити робочий процес і ефективніше виконувати запити до даних. Саме тому 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)