SQLAlchemy, Postgres: запуск SQL без транзакции

#python #postgresql #sqlalchemy #pg8000

#python #postgresql #sqlalchemy #pg8000

Вопрос:

Я использую SQLAlchemy и pg8000 для подключения к базе данных Postgres.

Я проверил таблицу pg_stat_activity, которая показывает мне несколько запросов select в состоянии «ожидания в транзакции», многие из них. Но приложение гораздо больше читает, чем записывает, то есть вставок мало и далеко друг от друга.

Я подозреваю, что для каждого запроса создается новая транзакция, даже для простых операторов select .

Возможно ли запустить запрос только для чтения без необходимости транзакции? Чтобы его не нужно было фиксировать / откатывать?

В настоящее время приложение выполняет свои запросы с помощью метода sqlalchemy.engine.Engine.execute для операций CRUD и курсоров для вызова хранимых процедур. Как мне обновить эти вызовы методов, чтобы указать, что я хочу, чтобы некоторые из них не запускали транзакции?

Комментарии:

1. Версии SQLAlchemy до версии 1.4 предлагали некоторые способы указания «автоматической фиксации» в качестве опции выполнения, но в версии 1.4 они устарели. Рекомендуемый подход заключается в выполнении инструкций внутри with блока (диспетчер контекста), чтобы транзакция автоматически фиксировалась или откатывалась при выходе из этого блока.