Как выполнить соединение таблиц в SQLAlchemy?

Пользователь

от ottilie.farrell , в категории: Python , 2 месяца назад

Как выполнить соединение таблиц в SQLAlchemy?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от ian.heidenreich , 11 дней назад

@ottilie.farrell 

В SQLAlchemy можно выполнить соединение таблиц при помощи метода join() объекта Table. Пример:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
from sqlalchemy import create_engine, MetaData, Table, Column, Integer, String, DateTime

# Создаем два объекта таблиц
metadata = MetaData()
users = Table('users', metadata,
    Column('id', Integer, primary_key=True),
    Column('name', String),
    Column('created_at', DateTime)
)
orders = Table('orders', metadata,
    Column('id', Integer, primary_key=True),
    Column('user_id', None, ForeignKey('users.id')),
    Column('product_name', String),
    Column('quantity', Integer),
    Column('total_price', Integer)
)

# Создаем движок для работы с базой данных
engine = create_engine('sqlite:///example.db', echo=True)

# Создаем соединенную таблицу
join_expr = users.join(orders, users.c.id == orders.c.user_id)
result = engine.execute(select([users.c.name, orders.c.product_name]).select_from(join_expr))

# Выводим результат
for row in result:
    print(row)


В данном примере мы создаем две таблицы users и orders, которые относятся к базе данных SQLite. Затем мы создаем engine, который будет использоваться для работы с базой данных. Далее, при помощи метода join() объекта Table мы создаем соединенную таблицу join_expr, которая соединяет таблицы users и orders. Наконец, мы выполняем запрос к таблице join_expr, выбираем столбцы users.name и orders.product_name и выводим результаты на экран.