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