Utilizzo dei cursori in mysql-python Ero solito chiamare "BEGIN;", "COMMIT;" e "ROLLBACK;" esplicitamente come segue:Perché la connessione in DB-API Python non ha l'operazione "inizio"?
try:
cursor.execute("BEGIN;")
# some statements
cursor.execute("COMMIT;")
except:
cursor.execute("ROLLBACK;")
poi, ho scoperto che l'oggetto connessione sottostante ha i metodi corrispondenti:
try:
cursor.connection.begin()
# some statements
cursor.connection.commit()
except:
cursor.connection.rollback()
ispezionare il DB-API PEP ho scoperto che non menziona il metodo begin() per l'oggetto di connessione, anche per le estensioni.
Mysql-python, a proposito, lancia il deprecazione, quando si utilizza il metodo. sqlite3.connection, ad esempio, non ha affatto il metodo.
E la domanda è perché non esiste un tale metodo nel PEP? L'istruzione è in qualche modo facoltativa, è sufficiente richiamare commit()?
Grazie per il link utile alla domanda adiacente. Questa non è la risposta alla mia domanda, ma fa luce sulle possibili ragioni. – newtover
@newtower: hai ragione, ero in dubbio per rispondere o semplicemente postare un commento ma facendo così potrei postare quel piccolo snip. –
A proposito, sebbene sia utile includere la connessione con un gestore di contesto, preferisco riutilizzare la connessione nelle query adiacenti, ma le classi di cursori non implementano l'interfaccia contextmanager, anche in python 2.6. – newtover