0

“行”变量返回单行,但似乎选择语句返回“行”对象。我想从“行”变量中提取字段 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)
4

3 回答 3

0

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

{{for val in row:}}
    {{=val.a}}
    {{=val.d}]
{{pass}}
于 2013-06-02T12:28:24.687 回答
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()

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

于 2013-06-02T13:20:16.273 回答
0

简短的答案是 .first() 在你的 .select() 之后

row = db((db.tbl_stat.c_id == c_id) & (db.tbl_stat.evo_type == evo_id)).select().first()
于 2016-11-23T11:37:03.190 回答