Найти - Пользователи
Полная версия: SQLAlchemy: курсор
Начало » Базы данных » SQLAlchemy: курсор
1
j2a
Необходимо использовать “server-side cursor” в SQLAlchemy для одного запроса. Как делать при создании engine - знаю. А как для одного запроса - нет. Пока сделал так:


import sqlalchemy as sa

def get_data(engine):
# вот для этого запроса нужен курсор
s = sa.select(…)
return engine.connect().execute(s)

def fill_related_data(engine, data):
connection = engine.connect()
for row in data:
s = sa.select(…)
related = connection.execute(s).fetchone()
yield (row, related)

def main(engine_uri)
engine_with_cursors = sa.create_engine(
engine_uri,
echo=False,
server_side_cursors=True,
)
engine_without_cursors = sa.create_engine(
engine_uri,
echo=False,
server_side_cursors=False,
)
return fill_related_data(engine_without_cursors, get_data(engine_with_cursors)))


P.S. СУБД - PostgreSQL, SQLAlchemy - 0.4.3
Андрей Светлов
Кажется, никак. Курсоры создаются через connection pool, а они - одна на engine
balu
Андрей Светлов
они - одна на engine
Тоесть как в DB API - одно соединение, одна транзакция?
j2a
Андрей Светлов
Кажется, никак. Курсоры создаются через connection pool, а они - одна на engine
Не здорово. Чаще всего server-side курсоры нужны для одного-двух запросов, а тащить за собой два engine: один с курсорами, другой без – не кошерно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB