2010-05-17 16 views

Respuesta

12

La especificación DB-API requiere que la conexión a la base de datos se inicia una nueva transacción, de manera predeterminada. Debe marcar commit para confirmar cualquier cambio que realice o rollback para descartarlos.

Tenga en cuenta que si la base de datos admite una función de confirmación automática, debe estar desactivada inicialmente.

Pure SELECT declaraciones, ya que nunca hacen ningún cambio en la base de datos, no es necesario que se hayan confirmado sus cambios.

6

commit se usa para indicarle a la base de datos que guarde todos los cambios en la transacción actual.

Seleccionar no cambia los datos de modo que no hay nada para salvar y por lo tanto nada de cometer

Ver wikipedia para las transacciones

0

Otros han explicado por qué una confirmación no es necesaria en una instrucción SELECT. Sólo quería señalar que podría utilizar la propiedad autocommit del objeto Connection para evitar tener que ejecutar manualmente comprometerse:

import cx_Oracle 

with cx_Oracle.connect(usr, pwd, url) as conn: 
    conn.autocommit = True 
    cursor = conn.cursor() 
    cursor.execute("UPDATE SO SET STATUS='PE' WHERE ID='100'") 
    cursor.close() 

Esto es especialmente útil cuando se tienen múltiples INSERT, UPDATE y DELETE dentro de la misma conexión.

Cuestiones relacionadas