Python 当通过RESTAPI接收数据时,如何使用两个输出参数在django中运行mysql存储过程?
我正在处理一个django项目,在这个项目中,我必须使用一个存储过程来更新多个表,它给出了两个输出参数。有四个输入参数来自RESTAPI 该过程在phpmyadmin/MySql中正常运行 在纯python脚本中,它不会更新所需的表,而是正确地给出输出 在django中,我无法运行该过程 我只是想知道如何正确设置输出参数并在django中执行该过程 我曾在一个单独的python脚本中尝试过,但它只提供输出参数,不更新表。在djando中,我尝试编辑views.py 纯python脚本: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
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发布一组新数据时,如果没有任何类型的输出,则不会发生错误