2014-01-28 73 views
0

時,我有如下查詢:的web2py DB查詢請選擇顯示字段名

str(db(db.items.id==int(row)).select(db.items.imageName)) + "\n" 

輸出包括字段名稱:

items.imageName 
homegear\homegear.jpg 

如何刪除它,以便字段名稱不會包括在內,只是選定的圖像名稱。

我試圖引用它像一個列表[1]給我一個超出範圍的錯誤和[0] i的結束:

<Row {'imageName': 'homegear\\homegear.jpg'}> 

上面的是不是一個列表,什麼目的是,如何我可以參考嗎?

謝謝!

約翰

回答

5

db(db.items.id==int(row)).select(db.items.imageName)返回Rows對象,其__str__方法將其轉換爲CSV輸出,這是你所看到的。

A Rows object contains objects,and a object contains field values。要訪問單個字段值,必須先索引Rows對象以提取,然後獲取單個字段值作爲的屬性。所以,在這種情況下,這將是:

db(db.items.id==int(row)).select(db.items.imageName)[0].imageName 

或:

db(db.items.id==int(row)).select(db.items.imageName).first().imageName 

rows.first()超過rows[0]的優勢在於,前者返回None的情況下有沒有行,而後者將產生例外情況(這在上述情況下不起作用,因爲如果沒有行,則隨後嘗試訪問.imageName屬性會在兩種情況下引發異常)。

請注意,即使select只返回單個字段的單個行,您仍然必須顯式提取上面的行和字段值。