搜索並嘗試不同的事情後,我似乎無法弄清楚我在這裏做錯了什麼。我打算髮生的事情是填充orderServicesFull,其中服務對象填充了由orderServices的serviceID過濾的數據庫數據。按列表屬性過濾SQLAlchemy屬性錯誤
我運行到是我似乎無法找到正確的語法甩開orderServices服務ID的每個實例(代碼第二行)的問題。
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。
我希望這可以幫助別人有同樣的問題或類似的。
有趣的..沒有加入和過濾器被轉換爲SQL的這個序列?如果不是這樣,我不會在任何東西上做這個,但只有小桌子。最好在數據庫級別進行連接和過濾。 – Tagar 2015-06-28 15:54:51
是的,它被轉換爲SQL – van 2015-06-28 18:15:49