Esta es una falla en Python DB-API:inicia una transacción por usted. No debería hacer eso; si y cuándo iniciar una transacción debe depender del programador. Las API centrales de bajo nivel como esta no deberían cuidar al desarrollador y hacer cosas como iniciar transacciones a nuestras espaldas. Somos grandes, podemos iniciar las transacciones nosotros mismos, gracias.
Con psycopg2, puede deshabilitar este desafortunado comportamiento con una extensión API:ejecute connection.autocommit = True
. Lamentablemente, no existe una API estándar para esto, por lo que debe depender de extensiones no estándar para emitir comandos que deben ejecutarse fuera de una transacción.
No hay lenguaje sin verrugas, y esta es una de Python. A mí también me ha mordido esto antes.