2009-03-31 15 views

Respuesta

21

Aunque en realidad no figura en los documentos, un objeto ResultProxy también tiene una propiedad rowcount.

+0

'rowcount' no es en realidad el recuento de filas afectadas * *. Ver mi respuesta para más detalles. –

+0

Los documentos incluyen 'rowcount' estos días: http://docs.sqlalchemy.org/en/latest/core/connections.html#sqlalchemy.engine.ResultProxy.rowcount –

5

rowcount es no el número de filas afectadas. Es el número de filas combinadas. Ver lo doc dice

Este atributo devuelve el número de filas emparejados, que no es necesariamente el mismo que el número de filas que eran en realidad modificado - una instrucción UPDATE, por ejemplo, puede no tener neta cambiar en una fila dada si los valores de SET dados son los mismos que los presentes en la fila ya. Tal fila sería emparejada pero no modificada. En backends que cuentan con ambos estilos, tales como MySQL, rowcount está configurado por defecto para devolver el recuento de coincidencia en todos los casos

Así que para ambos de los siguientes escenarios rowcount reportarán 1. Debido a Rows matched: 1

  1. una fila cambió con update comunicado. se ejecuta

    Query OK, 1 row affected (0.00 sec) 
    Rows matched: 1 Changed: 1 Warnings: 0 
    
  2. misma update comunicado.

    Query OK, 0 row affected (0.00 sec) 
    Rows matched: 1 Changed: 0 Warnings: 0 
    
Cuestiones relacionadas