web2py db query选择显示字段名称

时间:2014-01-28 08:10:57

标签: select web2py

当我有以下查询时:

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

输出包括字段名称:

items.imageName  
homegear\homegear.jpg

如何删除它,以便不包含字段名称,只包括所选的图像名称。

我尝试引用它就像列表[1]给我一个超出范围的错误和[0]我最终得到:

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

上面不是一个列表,那是什么对象以及如何引用它?

谢谢!

约翰

1 个答案:

答案 0 :(得分:5)

db(db.items.id==int(row)).select(db.items.imageName)会返回Rows个对象,其__str__方法会将其转换为CSV输出,这就是您所看到的。

Rows对象包含Row个对象,Row对象包含字段值。要访问单个字段值,您必须首先索引Rows对象以提取Row,然后将单个字段值作为Row的属性。所以,在这种情况下,它将是:

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,而后者将生成异常(这在上面没有帮助case,因为如果没有行,后续尝试访问.imageName属性会引发异常。

注意,即使select只返回一个包含单个字段的行,您仍然必须如上所述显式提取行和字段值。