Уведомления

Группа в Telegram: @pythonsu

#1 Март 2, 2008 18:17:47

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

SQLAlchemy: курсор

Необходимо использовать “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



Офлайн

#2 Март 3, 2008 16:00:40

Андрей Светлов
От:
Зарегистрирован: 2007-05-15
Сообщения: 3137
Репутация: +  14  -
Профиль   Адрес электронной почты  

SQLAlchemy: курсор

Кажется, никак. Курсоры создаются через connection pool, а они - одна на engine



Офлайн

#3 Март 3, 2008 16:04:13

balu
От:
Зарегистрирован: 2006-05-24
Сообщения: 521
Репутация: +  0  -
Профиль   Отправить e-mail  

SQLAlchemy: курсор

Андрей Светлов
они - одна на engine
Тоесть как в DB API - одно соединение, одна транзакция?



Офлайн

#4 Март 3, 2008 19:33:43

j2a
От:
Зарегистрирован: 2006-06-29
Сообщения: 869
Репутация: +  1  -
Профиль   Отправить e-mail  

SQLAlchemy: курсор

Андрей Светлов
Кажется, никак. Курсоры создаются через connection pool, а они - одна на engine
Не здорово. Чаще всего server-side курсоры нужны для одного-двух запросов, а тащить за собой два engine: один с курсорами, другой без – не кошерно.



Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version