Il s'agit d'une faille dans l'API Python DB :elle démarre une transaction pour vous. Cela ne devrait pas faire cela; si et quand commencer une transaction devrait être au programmeur. Les API de base de bas niveau comme celle-ci ne devraient pas surveiller le développeur et faire des choses comme démarrer des transactions dans notre dos. Nous sommes de grands garçons :nous pouvons commencer les transactions nous-mêmes, merci.
Avec psycopg2, vous pouvez désactiver ce comportement malheureux avec une extension API :exécutez connection.autocommit = True
. Il n'y a malheureusement pas d'API standard pour cela, vous devez donc dépendre d'extensions non standard pour émettre des commandes qui doivent être exécutées en dehors d'une transaction.
Aucune langue n'est sans ses verrues, et celle-ci en est une de Python. J'ai déjà été mordu par ça aussi.