我试图从ladon / python返回4行最多100行,但它只返回for循环中的第一行。目前它返回
编辑:For循环可以正常工作
**for row in cursor:
RSOID = row.RSO_ID
ALIAS=row.ALIAS
Qty=row.QTY
print(RSOID)
print(ALIAS)
print(Qty)**
ItemNum-1234-ItemNum
定量-1-定量
RSOID -1- RSOID
这是我的代码:
class OrderLookUpResponse(LadonType):
RSOID = str
ItemNum = str
Quant = str
@ladonize(str,rtype=OrderLookUpResponse)
def LookupOrder(self,OrderID):
cursor.execute("SELECT ALIAS,QTY,RSO_ID FROM RSK_DETAIL WHERE RSO_ID IN(SELECT RSO_ID FROM RSK_ORDER WHERE ACCT_CODE = 'SCRUBBED')")
rows=cursor.fetchall()
for row in rows:
RSOID = row.RSO_ID
ALIAS=row.ALIAS
Qty=row.QTY
result = OrderLookUpResponse()
result.RSOID=RSOID
result.ItemNum=ALIAS
result.Quant=Qty
return result
答案 0 :(得分:1)
你在for循环中有返回。因此,该函数将在第一个循环期间退出,因此您将只获得第一个结果。我的建议:在命令“return”之前删除额外的标签。
您应该将appending列入所有结果列表:
from ladon.ladonizer import ladonize
from ladon.types.ladontype import LadonType
class OrderLookUpResponse(LadonType):
RSOID = str
ItemNum = str
Quant = str
@ladonize(str,rtype=[OrderLookUpResponse])
def LookupOrder(self,OrderID):
results=[]
cursor.execute("SELECT ALIAS,QTY,RSO_ID FROM RSK_DETAIL WHERE RSO_ID IN(SELECT RSO_ID FROM RSK_ORDER WHERE ACCT_CODE = 'SCRUBBED')")
rows=cursor.fetchall()
for row in rows:
RSOID = row.RSO_ID
ALIAS=row.ALIAS
Qty=row.QTY
result = OrderLookUpResponse()
result.RSOID=RSOID
result.ItemNum=ALIAS
result.Quant=Qty
results.append(result)
return results
变更摘要(为了更容易理解):
1)在类'OrderLookUpResponse'主体上添加了标签
2)在退货前取下一个标签
3)添加了一个名为“结果”的列表
4)将rtype = OrderLookUpResponse更改为rtype = [OrderLookUpResponse]
答案 1 :(得分:0)
您可能遇到问题,因为for
循环正在迭代值cursor.fetchall()
。这就是你的代码在第一行之后停止的原因。如果您将rows
值更改为列表(例如[]
),这应该会有所帮助。