12 votes

Comment faire pour commencer une transaction dans pymysql ? (mysql)

Je veux utiliser exécuter ci-dessous mysql script en utilisant avec pymysql.

START TRANSACTION;
BEGIN;
insert into ~~~ 
COMMIT;

mon code source python est

connection = pymysql.connect(~~~~~~~)
     with connection.cursor() as cursor :
         connection.begin()
         cursor.execute(~~.sql)
         connection.commit()
connection.close()

Ma question est la suivante : "connexion.begin()" est la même chose que "START TRANSACTION ; BEGIN ;" ? Je veux utiliser "START TRANSACTION ; BEGIN ;".

6voto

Nick T Points 5466

Selon la PyMySQL docs/exemple (singulier...cela ne semble pas être un paquet très bien supporté), par défaut l'auto-commit est désactivé, vous devez donc lancer connection.commit() pour terminer la transaction.

Leur exemple :

import pymysql.cursors

connection = pymysql.connect(host='localhost',
                             user='user',
                             password='passwd',
                             db='db',
                             charset='utf8mb4',
                             cursorclass=pymysql.cursors.DictCursor)

try:
    with connection.cursor() as cursor:
        sql = "INSERT INTO `users` (`email`, `password`) VALUES (%s, %s)"
        cursor.execute(sql, ('webmaster@python.org', 'very-secret'))

    # connection is not autocommit by default. So you must commit to save changes.
    connection.commit()

finally:
    connection.close()

0voto

Ilya Points 53

Pymysql.connections.Connection.begin

voir manuel pour plus d'informations

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X