remove query binds python sqlalchemy

python - query - sqlalchemy relationship



¿Cómo obtener el número de filas afectadas en sqlalchemy? (3)

Aunque no está realmente establecido en los documentos, un objeto ResultProxy tiene una propiedad de ResultProxy .

Tengo una pregunta sobre Python y el módulo sqlalchemy. ¿Cuál es el equivalente de cursor.rowcount en el sqlalchemy Python?


Sin embargo, lo que dice Shiplu es correcto, por supuesto, para responder a la pregunta, en muchos casos puede hacer que las columnas coincidentes sean iguales a las columnas modificadas al incluir la condición de que el valor es diferente en la cláusula WHERE, es decir:

UPDATE table SET column_to_be_changed = "something different" WHERE column_to_be_changed != "something different" AND [...your other conditions...]

rowcount de filas devolverá el número de filas afectadas, ya que es igual al número de filas coincidentes.


rowcount de filas no es el número de filas afectadas. Es el número de filas coincidentes. Mira lo que dice el docs.sqlalchemy.org/en/latest/core/…

Este atributo devuelve el número de filas que coinciden , que no es necesariamente el mismo que el número de filas que se modificaron realmente. Por ejemplo, una instrucción UPDATE puede no tener un cambio neto en una fila determinada si los valores de SET son los mismos que Los presentes en la fila ya. Tal fila sería igualada pero no modificada. En los backends que presentan ambos estilos, como MySQL, el recuento de rowcount se configura de manera predeterminada para devolver el recuento de coincidencias en todos los casos

Por lo tanto, para los dos siguientes escenarios, el rowcount informará 1 . Debido a Rows matched: 1

  1. una fila cambió con la instrucción de update .

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

  2. Se ejecuta la misma sentencia de update .

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