当我有以下查询:
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 回答
db(db.items.id==int(row)).select(db.items.imageName)
返回一个Rows
对象,其__str__
方法将其转换为CSV输出,这就是您所看到的 .Rows
对象包含Row
对象,Row
对象包含字段值 . 要访问单个字段值,必须首先索引Rows
对象以提取Row
,然后将单个字段值作为Row
的属性 . 所以,在这种情况下,它将是:要么:
rows.first()
超过rows[0]
的优点是前者在没有行的情况下返回None
,而后者将生成异常(这在上述情况下没有帮助,因为后续尝试访问.imageName
属性会引发异常在任何一种情况下,如果没有行) .请注意,即使select只返回一个包含单个字段的行,您仍然必须如上所述显式提取行和字段值 .