web2py:从行对象获取字段

时间:2013-06-02 11:48:55

标签: python web2py

'row'变量返回单行但看起来select语句返回'rows'对象。我想从'row'变量中提取字段a和字段d。

我尝试过做row.a或row.d但这会返回错误。

def d_comp():    

    c_id = request.args(0)
    evo_id = request.args(1)

    row = db((db.tbl_stat.c_id == c_id) & (db.tbl_stat.evo_type == evo_id)).select()

    c = db(db.tbl_c.id == c_id).select(db.tbl_c.ALL)

    a = 1

    d = 1

    p = 1

    return dict(c=c,a=a,d=d,p=p)

3 个答案:

答案 0 :(得分:0)

我在html文件中执行以下操作解决了这个问题:

{{for val in row:}}
    {{=val.a}}
    {{=val.d}]
{{pass}}

答案 1 :(得分:0)

.select()方法始终返回DAL Rows对象,即使它不包含任何记录或只包含一条记录。 Rows对象的行为类似于列表,因此您可以通过下标提取单个记录(这些是DAL Row对象):

rows = db((db.tbl_stat.c_id == c_id) & (db.tbl_stat.evo_type == evo_id)).select()
row = rows[0]  # extracts the first record in "rows"

具体提取第一行的另一种方便方法是:

row = rows.first()

该方法的优点是,如果Rows对象中没有记录而不是引发异常,它只返回None

答案 2 :(得分:0)

简短的回答是在你的.select()

之后加上.first()
row = db((db.tbl_stat.c_id == c_id) & (db.tbl_stat.evo_type == evo_id)).select().first()