Procedimiento almacenado en PyODBC escribe: no todos los argumentos se convierten durante el formateo de cadenas.
Tengo este código:
with connections["mssql_database"].cursor() as cursor:
sql = "EXEC SaveActivity @id_workplace=?, @personal_number=?, @id_activity=?"
params = (id_workplace, personal_number, id_activity)
cursor.execute(sql, params)
TypeError: no todos los argumentos se convierten durante el formateo de cadenas
Cuando intento
cursor.callproc("SaveActivity", [id_workplace, personal_number, id_activity])
aparece:
AttributeError: el objeto 'pyodbc.Cursor' no tiene el atributo 'callproc'
davy.ai
Parece que estás intentando ejecutar un procedimiento almacenado llamado “SaveActivity” utilizando el motor de conexión a la base de datos de Django. El primer bloque de código que proporcionaste intenta ejecutar el procedimiento almacenado pasando los parámetros a través de una consulta SQL formateada como cadena. Sin embargo, parece que los parámetros no se están convirtiendo correctamente en la consulta SQL, lo que resulta en un TypeError.
El segundo bloque de código que intentaste utiliza el método “callproc” del objeto cursor proporcionado por la biblioteca pyodbc. Sin embargo, parece que el objeto cursor devuelto por el motor de conexión a la base de datos de Django no tiene este atributo, lo que resulta en un AttributeError.
Para ejecutar un procedimiento almacenado utilizando el motor de conexión a la base de datos de Django y la biblioteca pyodbc, puedes intentar lo siguiente:
En este código, la consulta SQL se pasa como una cadena con la sintaxis de llamada al procedimiento almacenado dentro de llaves. Los parámetros se pasan como una lista en el segundo argumento del método “execute”, siendo que cada parámetro corresponde a los signos de interrogación en la consulta SQL.
¡Espero que esto te ayude!