web2py-从行对象中提取值并存储在变量中

时间:2018-11-29 21:08:23

标签: python sqlite web2py

我正在编写一个简单的web2py应用程序,似乎无法弄清楚如何对db.select语句中的变量进行比较检查。代码如下:

form = FORM('Enter Member ID: ', INPUT(_type='text', _name='name'),
           INPUT(_type='submit', _value='submit'))

if form.accepts(request, session):
    member_id= form.vars.name
    measure_1 = db(db.Detailed_Info.MEMBER_NBR==form.vars.name).select(db.Detailed_Info.MEASURE_1)
    measure_2 = db(db.Detailed_Info.MEMBER_NBR==form.vars.name).select(db.Detailed_Info.MEASURE_2)
    response.flash = 'Form Accepted'


if measure_1=='DBD':
   test = 'IT WORKED'
else: 
   test = 'IT DIDNT WORK'

return dict(form=form, test=test)

我的问题是,我能够看到第一条选择语句(定义变量measure_1)中的值实际上是“ DBD”。但是在底部有条件的if语句不起作用。我觉得这是因为select语句的结果是一个“行”对象。有没有办法提取实际值?

谢谢!

1 个答案:

答案 0 :(得分:2)

引用web2py手册:

DAL行是数据库选择返回的对象。可以想到 作为行行的列表:

rows = db(db.mytable.myfield!=None).select()

行包含字段值。

for row in rows:
    print row.myfield

假设,例如,您也可以为第一行做

result = rows[0].myfield

编辑: 再次从文档中,索引应该工作: 给定一行

row = rows[0]

您可以使用多个等效表达式提取其值:

>>> row.name
Alex
>>> row['name']
Alex
>>> row('person.name')
Alex