#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
блока (диспетчер контекста), чтобы транзакция автоматически фиксировалась или откатывалась при выходе из этого блока.