¿Cómo puedo probar si una consulta de Python SQL funcionó si no se supone que devuelva nada?
He leído un excelente artículo aquí sobre el manejo de errores. https://stackoverflow.com/questions/30996401/error-handling-in-python-mysql
Y hay mil preguntas similares de personas con problemas donde su consulta no devuelve nada, pero eso es porque se supone que no debe hacerlo.
Tengo un problema ligeramente diferente.
Tengo una consulta SQL que está diseñada para transformar la creación de una nueva tabla.
SELECT *
INTO MyDataBase.MySchema.NewTable
FROM
(SELECT
ID,
Count(*) AS ProductCount
FROM
MyDataBase.MySchema.MyTable
GROUP BY
ID
) ProductCount
Si ejecuto la consulta en SSMS, funciona perfectamente y SSMS simplemente me informa:
(1901 filas afectadas)
Tiempo de finalización: 2021-12-07T09:28:32.2541722+13:00
Pero después de deliberadamente mal editar el código y tratar de ejecutar la consulta desde un script de Python, solo me da un resultado vago sin indicar que el script no funcionó en realidad.
fila = curs.fetchone()
pyodbc.ProgrammingError: No hay resultados. La SQL anterior no era una consulta.
Entonces… ¿Cómo puedo verificar que la transformación, la consulta SQL, se haya ejecutado correctamente, incluso si no se supone que debe devolver ningún resultado… desde Python?
Sé que no lo hizo.
davy.ai
Para verificar que la consulta SQL se ejecutó correctamente, incluso si no se supone que devuelva resultados, puedes usar el atributo
rowcount
del objeto cursor en PyODBC. Este atributo devuelve el número de filas afectadas por la última declaración SQL ejecutada utilizando el cursor.Aquí tienes un ejemplo de fragmento de código que muestra cómo verificar la ejecución exitosa de la consulta SQL:
En este fragmento de código, primero creamos una conexión al servidor SQL utilizando PyODBC. Luego creamos un objeto cursor y ejecutamos la consulta SQL utilizando el método
execute()
. Si la ejecución es exitosa, obtenemos el número de filas afectadas utilizando el atributorowcount
del objeto cursor y lo imprimimos. Si hay un error durante la ejecución, capturamos el error utilizando un bloque try-except y lo manejamos de manera apropiada.Con este enfoque, puedes verificar la ejecución exitosa de la consulta SQL en Python y manejar cualquier error que pueda ocurrir.