Не все аргументы преобразуются при форматировании строки при попытке выполнить хранимую процедуру mssql из django

Моя процедура состоит из вставки данных в таблицу в базе данных из REST API.
p1,p2,p3 - параметры, поступающие из пользовательского интерфейса
. P1,P2,P3 - параметры моей хранимой процедуры.
Вот мой код

def test(request):
    if request.method == "POST":
        with connection.cursor() as cursor:
            P1 = request.data["p1"]
            P2 = request.data["p2"]
            P3 = request.data["p3"]
            params = (P1,P2,P3)
            print(params)
            try:
                cursor.execute("{CALL [dbo].[myStoredProcedure] (?,?,?)}",params)
                if cursor.return_value == 1:
                    result_set = cursor.fetchall()
                    print(result_set)
            finally:
                cursor.close()
            return Response({"msg":"post"})
    else:
        return Response({"msg": "get"})

когда я добавляю такие параметры как: cursor.execute("{CALL [dbo].[myStoredProcedure] (P1,P2,P3)}") "P1", "P2", "P3" вставляются в базу данных, но не значения этих параметров.
Как решить

эту проблему?
  File "C:\Users\HP\.virtualenvs\GFA\Lib\site-packages\rest_framework\views.py", line 509, in dispatch
    response = self.handle_exception(exc)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\HP\.virtualenvs\GFA\Lib\site-packages\rest_framework\views.py", line 469, in handle_exception
    self.raise_uncaught_exception(exc)
  File "C:\Users\HP\.virtualenvs\GFA\Lib\site-packages\rest_framework\views.py", line 480, in raise_uncaught_exception
    raise exc
  File "C:\Users\HP\.virtualenvs\GFA\Lib\site-packages\rest_framework\views.py", line 506, in dispatch
    response = handler(request, *args, **kwargs)
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\HP\.virtualenvs\GFA\Lib\site-packages\rest_framework\decorators.py", line 50, in handler
    return func(*args, **kwargs)
           ^^^^^^^^^^^^^^^^^^^^^
  File "E:\projets\quantum\GFA\api\views.py", line 19, in agence_actions
    cursor.execute("{CALL myStoredProcedure (?,?,?)}",params)
  File "C:\Users\HP\.virtualenvs\GFA\Lib\site-packages\django\db\backends\utils.py", line 121, in execute
    with self.debug_sql(sql, params, use_last_executed_query=True):
  File "C:\Users\HP\AppData\Local\Programs\Python\Python311\Lib\contextlib.py", line 158, in __exit__
    self.gen.throw(typ, value, traceback)
  File "C:\Users\HP\.virtualenvs\GFA\Lib\site-packages\django\db\backends\utils.py", line 139, in debug_sql
    sql = self.db.ops.last_executed_query(self.cursor, sql, params)
          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "C:\Users\HP\.virtualenvs\GFA\Lib\site-packages\mssql\operations.py", line 424, in last_executed_query
    return sql % params
           ~~~~^~~~~~~~
TypeError: not all arguments converted during string formatting

Поскольку все параметры являются строками, замените знаки вопроса на строковое представление %s в вашем коде.
Таким образом, мы получим:

cursor.execute("{CALL [dbo].[myStoredProcedure] (%s,%s,%s)}",params)
Вернуться на верх