Python 当通过RESTAPI接收数据时,如何使用两个输出参数在django中运行mysql存储过程?

Python 当通过RESTAPI接收数据时,如何使用两个输出参数在django中运行mysql存储过程?,python,mysql,django,stored-procedures,Python,Mysql,Django,Stored Procedures,我正在处理一个django项目,在这个项目中,我必须使用一个存储过程来更新多个表,它给出了两个输出参数。有四个输入参数来自RESTAPI 该过程在phpmyadmin/MySql中正常运行 在纯python脚本中,它不会更新所需的表,而是正确地给出输出 在django中,我无法运行该过程 我只是想知道如何正确设置输出参数并在django中执行该过程 我曾在一个单独的python脚本中尝试过,但它只提供输出参数,不更新表。在djando中,我尝试编辑views.py 纯python脚本: impo

我正在处理一个django项目,在这个项目中,我必须使用一个存储过程来更新多个表,它给出了两个输出参数。有四个输入参数来自RESTAPI

该过程在phpmyadmin/MySql中正常运行

在纯python脚本中,它不会更新所需的表,而是正确地给出输出

在django中,我无法运行该过程

我只是想知道如何正确设置输出参数并在django中执行该过程

我曾在一个单独的python脚本中尝试过,但它只提供输出参数,不更新表。在djando中,我尝试编辑views.py

纯python脚本:

import mysql.connector
from mysql.connector import Error
from mysql.connector import errorcode

var1 = " "
var2 = " "

try:
    mySQL_conn = mysql.connector.connect(host='192.111.11.111',
                                   database='Safemode',
                                   user='root',
                                   password='password here')
    cursor = mySQL_conn.cursor()
    x = cursor.callproc('ProcessIOTData',[1,2,"3","2019-06- 
                                           21T11:56:33Z",var1,var2])

    for result in cursor.stored_results():
        print(result.fetchall())

    for output in x:
    print(x)

except mysql.connector.Error as error:
    print("Failed to execute stored procedure: {}".format(error))
finally:

    if (mySQL_conn.is_connected()):
        cursor.close()
        mySQL_conn.close()
        print("connection is closed")
在Django中(views.py)。我还没有保存api中的数据,因为这也将在以下过程中完成:

.
.
.
from django.db import connection


class IotTrackerListView(viewsets.ViewSet):
.
.
.
def post(self, request, *args, **kwargs):
    serializer = IotTrackerSerializer(data=request.data)

    var1=" "
    var2=" "


    cur = connection.cursor()  
    x=cur.callproc('ProcessIOTData', [request.data['iotiid'],request.data['sensortype'],request.data['sensordata'],request.data['trackingtime'],var1,var2]) 

    cur.execute('ProcessIOTData')
    result.fetchall()
    for incident in x:
        print(incident)
    cur.close()

    if serializer.is_valid():
        ##### serializer.save()
        return Response(serializer.data, 
                                     status=status.HTTP_201_CREATED)
    return Response(serializer.errors,
                                 status=status.HTTP_400_BAD_REQUEST)
程序:

ProcessIOTData`(In pIOTIID Int(15),
In pSensorType Int(1),
In pSensorData VarChar(25),
IN pIncidentTime DateTime,
Out pStatus Int(1),
Out pIncidentIID Int(15))
API参数:

{
        "iottrackiid": 9,
        "iotiid": 1,
        "trackingtime": "2019-06-21T11:56:31Z",
        "sensortype": 5,
        "sensordata": "0"
 }
在django中,当通过api发布一组新数据时,如果没有任何类型的输出,则不会发生错误