当我有以下查询:
str(db(db.items.id==int(row)).select(db.items.imageName)) + "\n"
Run Code Online (Sandbox Code Playgroud)
输出包括字段名称:
items.imageName
homegear\homegear.jpg
Run Code Online (Sandbox Code Playgroud)
如何删除它,以便不包括字段名称,只包括所选的图像名称.
我尝试引用它像列表[1]给我一个超出范围的错误和[0]我最终得到:
<Row {'imageName': 'homegear\\homegear.jpg'}>
Run Code Online (Sandbox Code Playgroud)
以上不是列表,那是什么对象,我该如何参考呢?
谢谢!
约翰
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
Run Code Online (Sandbox Code Playgroud)
要么:
db(db.items.id==int(row)).select(db.items.imageName).first().imageName
Run Code Online (Sandbox Code Playgroud)
的优势rows.first()比rows[0]的是,前者的回报None的情况下有没有行,而后者会产生一个异常(这并不在上述情况下帮助,因为访问的后续尝试.imageName属性会在两种情况下,如果引发异常没有行).
请注意,即使select只返回一个包含单个字段的行,您仍然必须如上所述显式提取行和字段值.