Объединения таблиц
Даже если вы не выбираете столбцы из обеих таблиц или между ними не задана явная связь, вы всё равно можете использовать метод .join() для объединения таблиц и получения дополнительных данных. Метод join() принимает объект таблицы, которую нужно присоединить, в качестве первого аргумента, а условие связи между таблицами — в качестве второго. Затем используйте метод .select_from() для оператора SELECT, чтобы обернуть условие объединения. Например, в видео Джейсон выполнил следующий код, чтобы объединить таблицу census с таблицей state_fact так, чтобы столбец state таблицы census соответствовал столбцу name таблицы state_fact.
stmt = stmt.select_from(
census.join(
state_fact, census.columns.state ==
state_fact.columns.name)
Это упражнение является частью курса
Введение в базы данных на Python
Инструкции к упражнению
- Постройте запрос для выбора ВСЕХ столбцов из таблиц
censusиstate_fact. Например, чтобы выбрать все столбцы из таблицemployeesиsales, используйтеstmt = select([employees, sales]). - Добавьте к
stmtвызовselect_from, чтобы объединить таблицуcensusс таблицейstate_factпо столбцуstateизcensusи столбцуnameизstate_fact. - Выполните запрос, получите первую строку результата и сохраните её в переменную
result. Этот код уже написан. - Нажмите Отправить ответ, чтобы перебрать ключи объекта
resultв цикле и вывести каждый ключ вместе с его значением!
Интерактивное практическое упражнение
Попробуйте выполнить это упражнение, дополнив этот пример кода.
# Build a statement to select the census and state_fact tables: stmt
stmt = select([____, ____])
# Add a select_from clause that wraps a join for the census and state_fact
# tables where the census state column and state_fact name column match
stmt_join = stmt.select_from(
____(____, census.columns.____ == state_fact.columns.____))
# Execute the statement and get the first result: result
result = connection.execute(stmt_join).first()
# Loop over the keys in the result object and print the key and value
for key in result.keys():
print(key, getattr(result, key))