Това е недостатък в Python DB-API:той стартира транзакция вместо вас. Не трябва да прави това; дали и кога да започне транзакция трябва да зависи от програмиста. Основните API на ниско ниво като този не трябва да гледат на разработчика и да правят неща като стартиране на транзакции зад гърба ни. Ние сме големи момчета - можем сами да започнем транзакции, благодаря.
С psycopg2 можете да деактивирате това неприятно поведение с API разширение:изпълнете connection.autocommit = True
. За съжаление няма стандартен API за това, така че трябва да разчитате на нестандартни разширения, за да издавате команди, които трябва да се изпълняват извън транзакция.
Няма език без брадавици и това е един от тези на Python. И аз съм бил ухапан от това преди.