无法遍历 Django 中的数组列表
Cannot Iterate through the array list in Django
我正在遍历数据库中的所有记录,但只有第一行反映在输出中。元组列表的数据库数据
[(('HR749', datetime.datetime(2021, 11, 5, 20, 0, 17), 'Web', 'Referrals ', 'Draft', 'Bus', 'India', 'satish', 10902, 'Openings', datetime.date(2021, 11, 10),('HR855', datetime.datetime(2021, 11, 5, 20, 11, 41), 'Web', 'Referrals ', 'Draft', 'BusS', 'India', 'mah', 83837, ' referral', datetime.date(2021, 11, 10)), ('HR929', datetime.datetime(2021, 11, 5, 20, 22, 58), 'Web', 'Referrals ', 'Draft', 'BusS', 'India', 'ritika', 6124, 'Unable to submit', datetime.date(2021, 11, 10))]
这里,我试过的,我知道很简单,但我不知道为什么我无法从数据库中获取所有记录
views.py:
@api_view(['GET', 'POST'])
def ClaimReferenceView(request,userid):
try:
userid = Tblclaimreference.objects.filter(userid=userid)
except Tblclaimreference.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
userID = request.data.get(userid)
print(userID)
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_GetClaims] @UserId= %s',('10',))
result_set = cursor.fetchall()
print(type(result_set))
print(result_set)
for row in result_set:
Number= row[0]
Opened = row[1]
Contacttype = row[2]
Category1 = row[3]
State = row[4]
Assignmentgroup = row[5]
Country_Location = row[6]
Openedfor = row[7]
Employeenumber = row[8]
Shortdescription = row[9]
AllocatedDate = row[10]
return Response({"Number":Number,"Opened":Opened, "Contacttype": Contacttype, "Category1":Category1,
"State":State, "Assignmentgroup":Assignmentgroup, "Country_Location": Country_Location, "Openedfor":Openedfor,
"Employeenumber":Employeenumber, "Shortdescription": Shortdescription, "AllocatedDate":AllocatedDate}, status=status.HTTP_200_OK)
我建议您使用 django 的 ORM 而不是编写原始 SQL。
但是,在您的情况下,您需要做的是制作一个包含所有行的列表 (response_data
) 并将每个字典附加到它。
这应该有效:
def ClaimReferenceView(request,userid):
try:
userid = Tblclaimreference.objects.filter(userid=userid)
except Tblclaimreference.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
userID = request.data.get(userid)
print(userID)
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_GetClaims] @UserId= %s',('10',))
result_set = cursor.fetchall()
print(type(result_set))
print(result_set)
respone_data = []
for row in result_set:
response_data.append(
{
"Number": row[0],
"Opened": row[1],
"Contacttype": row[2],
"Category1": row[3],
"State": row[4],
"Assignmentgroup": row[5],
"Country_Location": row[6],
"Openedfor": row[7],
"Employeenumber": row[8],
"Shortdescription": row[9],
"AllocatedDate": row[10]
}
)
return Response(response_data, status=status.HTTP_200_OK)
我正在遍历数据库中的所有记录,但只有第一行反映在输出中。元组列表的数据库数据
[(('HR749', datetime.datetime(2021, 11, 5, 20, 0, 17), 'Web', 'Referrals ', 'Draft', 'Bus', 'India', 'satish', 10902, 'Openings', datetime.date(2021, 11, 10),('HR855', datetime.datetime(2021, 11, 5, 20, 11, 41), 'Web', 'Referrals ', 'Draft', 'BusS', 'India', 'mah', 83837, ' referral', datetime.date(2021, 11, 10)), ('HR929', datetime.datetime(2021, 11, 5, 20, 22, 58), 'Web', 'Referrals ', 'Draft', 'BusS', 'India', 'ritika', 6124, 'Unable to submit', datetime.date(2021, 11, 10))]
这里,我试过的,我知道很简单,但我不知道为什么我无法从数据库中获取所有记录
views.py:
@api_view(['GET', 'POST'])
def ClaimReferenceView(request,userid):
try:
userid = Tblclaimreference.objects.filter(userid=userid)
except Tblclaimreference.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
userID = request.data.get(userid)
print(userID)
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_GetClaims] @UserId= %s',('10',))
result_set = cursor.fetchall()
print(type(result_set))
print(result_set)
for row in result_set:
Number= row[0]
Opened = row[1]
Contacttype = row[2]
Category1 = row[3]
State = row[4]
Assignmentgroup = row[5]
Country_Location = row[6]
Openedfor = row[7]
Employeenumber = row[8]
Shortdescription = row[9]
AllocatedDate = row[10]
return Response({"Number":Number,"Opened":Opened, "Contacttype": Contacttype, "Category1":Category1,
"State":State, "Assignmentgroup":Assignmentgroup, "Country_Location": Country_Location, "Openedfor":Openedfor,
"Employeenumber":Employeenumber, "Shortdescription": Shortdescription, "AllocatedDate":AllocatedDate}, status=status.HTTP_200_OK)
我建议您使用 django 的 ORM 而不是编写原始 SQL。
但是,在您的情况下,您需要做的是制作一个包含所有行的列表 (response_data
) 并将每个字典附加到它。
这应该有效:
def ClaimReferenceView(request,userid):
try:
userid = Tblclaimreference.objects.filter(userid=userid)
except Tblclaimreference.DoesNotExist:
return Response(status=status.HTTP_404_NOT_FOUND)
if request.method == 'GET':
userID = request.data.get(userid)
print(userID)
cursor = connection.cursor()
cursor.execute('EXEC [dbo].[sp_GetClaims] @UserId= %s',('10',))
result_set = cursor.fetchall()
print(type(result_set))
print(result_set)
respone_data = []
for row in result_set:
response_data.append(
{
"Number": row[0],
"Opened": row[1],
"Contacttype": row[2],
"Category1": row[3],
"State": row[4],
"Assignmentgroup": row[5],
"Country_Location": row[6],
"Openedfor": row[7],
"Employeenumber": row[8],
"Shortdescription": row[9],
"AllocatedDate": row[10]
}
)
return Response(response_data, status=status.HTTP_200_OK)