Python web2py:从rows对象获取字段
“row”变量返回一行,但select语句似乎返回一个“rows”对象。我想从'row'变量中提取字段a和字段d 我尝试只执行row.a或row.d,但这会返回一个错误Python web2py:从rows对象获取字段,python,web2py,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()
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)
我通过在html文件中执行以下操作解决了问题:
{{for val in row:}}
{{=val.a}}
{{=val.d}]
{{pass}}
.select()
方法始终返回DAL Rows对象,即使它不包含任何记录或仅包含一条记录。Rows对象的作用类似于列表,因此您可以通过订阅以下内容来提取单个记录(DAL行对象):
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
,而不是引发异常。简短的答案是将.first()放在.select()之后
row = db((db.tbl_stat.c_id == c_id) & (db.tbl_stat.evo_type == evo_id)).select().first()