web2py - извлекает значение из объекта строки и сохраняет его в переменной - PullRequest
0 голосов
/ 30 ноября 2018

Я пишу простое приложение 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 является объект "row".Есть ли способ извлечь фактическое значение?

Спасибо!

1 Ответ

0 голосов
/ 30 ноября 2018

Ссылаясь на руководство web2py:

DAL Rows - это объект, возвращаемый выбором базы данных.Его можно представить как список строк строки:

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

Строка содержит значения полей.

for row in rows:
    print row.myfield

I предположим, вы также можете сделать, например, дляпервая строка,

result = rows[0].myfield

Редактировать: опять же из документов, индексирование должно работать: учитывая одну строку

row = rows[0]

, вы можете извлечь ее значения, используя несколько эквивалентных выражений:

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