Выборка данных из таблицы: чистый SQL
Как вы видели в видео, чтобы получить доступ к данным в базе данных и работать с ними, сначала необходимо установить соединение с помощью метода .connect(), вызванного на объекте engine. Это связано с тем, что функция create_engine(), которую вы использовали ранее, возвращает экземпляр engine, но не открывает соединение до тех пор, пока не будет вызвано действие, требующее подключения, — например, выполнение запроса.
Используя полученные знания о SQL и метод .execute() на объекте соединения, мы можем выполнить «сырой» SQL-запрос и получить все записи из таблицы census. Метод .execute() возвращает объект ResultProxy. На нём можно вызвать метод .fetchall(), чтобы получить результаты — то есть ResultSet.
В этом упражнении вы будете использовать традиционный SQL-запрос. Обратите внимание: при выполнении запроса через «сырой» SQL вы обращаетесь к таблице непосредственно в базе данных, поэтому шаг отражения (reflection) не нужен.
В следующем упражнении вы перейдёте к SQLAlchemy и познакомитесь с его преимуществами. Вперёд!
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- С помощью метода
.connect()объектаengineустановите соединение с базой данных. - Составьте SQL-запрос, который выбирает все столбцы из таблицы
census, и сохраните его в переменнуюstmt. Обратите внимание: SQL-запрос должен быть строкой. - Вызовите методы
.execute()и.fetchall()на объектеconnectionи сохраните результат в переменнуюresults. Помните, что.execute()вызывается перед.fetchall(), а в.execute()нужно передатьstmt. - Выведите
resultsна экран.
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
from sqlalchemy import create_engine
engine = create_engine('sqlite:///census.sqlite')
# Create a connection on engine
connection = ___
# Build select statement for census table: stmt
stmt = ____
# Execute the statement and fetch the results: results
results = ____
# Print results
print(____)