在搜索和尝试不同的事情之后,我似乎无法弄清楚我在这里做错了什么。我打算用一个服务对象填充 orderServicesFull,该对象填充了由 orderServices 的 serviceID 过滤的数据库数据。
我遇到的问题是我似乎找不到从 orderServices (第二行代码)中提取每个 serviceID 实例的正确语法。
orderServices = DBSession.query(ServicesByOrder).filter(ServicesByOrder.orderID == request.GET['orderID']).all()
orderServicesFull = DBSession.query(Services).filter(Services.serviceID == orderServices.serviceID).all()
错误:
AttributeError: 'list' object has no attribute 'serviceID'
我试过的:
在我试图解决这个问题时,我首先做了一些打印以了解正在传递的内容。我还查看了一些文档以尝试了解什么是合适的。我什至试过这个......哈哈
print("<---DEBUG--->")
serviceIDs = []
for i in range(0, len(orderServices)):
serviceIDs.append(orderServices[i].serviceID)
print(serviceIDs[i])
这背后的想法是它是一个简单的列表,我可以更轻松地使用它。我试图使用它而不是 orderServices 列表。你可以猜到这也不起作用。
任何想法或建议将不胜感激。
谢谢你的时间
!解决了!
好吧,经过一番折腾和更多的研究,我想出了一个解决方案。它可能没有其他人想出的那么有效,但它确实有效。
我的问题来自于我不知道列表中充满了对象。
orderServiceList = DBSession.execute(\
"SELECT s.serviceID, s.serviceName, s.serviceCost "+\
"FROM tblServicesByOrder AS so "+\
"INNER JOIN tblServices AS s "+\
"ON so.serviceID = s.serviceID "+\
"WHERE so.orderID = 1").fetchall()
orderServicesFull = [row for row in orderServiceList]
这样做允许我创建一个包含我需要的数据的字典列表,然后从那里填写我的 orderServicesFull。
我希望这可以帮助其他有同样问题或类似问题的人。