'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)
答案 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()