首页 文章

web2py db query选择显示字段名称

提问于
浏览
0

当我有以下查询:

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 回答

  • 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 ,而后者将生成异常(这在上述情况下没有帮助,因为后续尝试访问 .imageName 属性会引发异常在任何一种情况下,如果没有行) .

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

相关问题