Я работаю над проектом django, где мне нужно использовать хранимую процедуру для обновления нескольких таблиц, и она дает два выходных параметра.Существует четыре входных параметра из REST api.
Процедура работает правильно в 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")
IN 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 публикуется новый набор данных.