将用户输入值与数据库中 table 中的所有其他值进行比较
comparing user input values with all other values in a table in the database
在我的 web2py 控制器中,我有一个函数将用户输入值与数据库中 table 中的值进行比较,但问题是只比较数据库中的第一个值,然后比较第二个和其他值它没有与用户输入的值进行比较!!!
代码:
def bMarket():
key=db(db.regKeys).select(db.regKeys.ALL)
for k in key:
if request.vars.regCode == k.regKey:
message="Correct Key"
return DIV(message, _style="color: white; border: solid 1px green; width: 160px; background-color: green; font-weight: bold; padding: 3px; border-radius:5px;")
else:
return DIV("Incorrect Key", _id="regCodeTarget", _style="color: white; border: solid 1px red; width: 160px; background-color: red; font-weight: bold; padding: 3px; border-radius:5px;")<br />
我做错了什么???我如何才能将用户输入的值与数据库中的**所有其他值进行比较,而不仅仅是第一个值??**请帮忙!!!
for
循环内的代码检查密钥,如果不匹配,它会立即 return 发送 "Incorrect Key" 响应。相反,您应该遍历所有记录,并且在循环完成后仅 return "Incorrect Key":
def bMarket():
key=db(db.regKeys).select(db.regKeys.ALL)
for k in key:
if request.vars.regCode == k.regKey:
message="Correct Key"
return DIV(message, _style="color: white; border: solid 1px green; width: 160px; background-color: green; font-weight: bold; padding: 3px; border-radius:5px;")
return DIV("Incorrect Key", _id="regCodeTarget", _style="color: white; border: solid 1px red; width: 160px; background-color: red; font-weight: bold; padding: 3px; border-radius:5px;")
但是这种方法效率很低,因为它需要将数据库中的所有记录加载到一个Python对象中,然后循环遍历Python中的每条记录。相反,您应该直接通过数据库查询处理查找(不需要从数据库加载任何数据):
def bMarket():
key_exists = not db(db.regKeys.regKey == request.vars.regCode).isempty()
if key_exists:
return DIV(...)
else:
return DIV(...)
为了加快查找速度,您可以在数据库中的 regKey
列上创建索引。
在我的 web2py 控制器中,我有一个函数将用户输入值与数据库中 table 中的值进行比较,但问题是只比较数据库中的第一个值,然后比较第二个和其他值它没有与用户输入的值进行比较!!!
代码:
def bMarket():
key=db(db.regKeys).select(db.regKeys.ALL)
for k in key:
if request.vars.regCode == k.regKey:
message="Correct Key"
return DIV(message, _style="color: white; border: solid 1px green; width: 160px; background-color: green; font-weight: bold; padding: 3px; border-radius:5px;")
else:
return DIV("Incorrect Key", _id="regCodeTarget", _style="color: white; border: solid 1px red; width: 160px; background-color: red; font-weight: bold; padding: 3px; border-radius:5px;")<br />
我做错了什么???我如何才能将用户输入的值与数据库中的**所有其他值进行比较,而不仅仅是第一个值??**请帮忙!!!
for
循环内的代码检查密钥,如果不匹配,它会立即 return 发送 "Incorrect Key" 响应。相反,您应该遍历所有记录,并且在循环完成后仅 return "Incorrect Key":
def bMarket():
key=db(db.regKeys).select(db.regKeys.ALL)
for k in key:
if request.vars.regCode == k.regKey:
message="Correct Key"
return DIV(message, _style="color: white; border: solid 1px green; width: 160px; background-color: green; font-weight: bold; padding: 3px; border-radius:5px;")
return DIV("Incorrect Key", _id="regCodeTarget", _style="color: white; border: solid 1px red; width: 160px; background-color: red; font-weight: bold; padding: 3px; border-radius:5px;")
但是这种方法效率很低,因为它需要将数据库中的所有记录加载到一个Python对象中,然后循环遍历Python中的每条记录。相反,您应该直接通过数据库查询处理查找(不需要从数据库加载任何数据):
def bMarket():
key_exists = not db(db.regKeys.regKey == request.vars.regCode).isempty()
if key_exists:
return DIV(...)
else:
return DIV(...)
为了加快查找速度,您可以在数据库中的 regKey
列上创建索引。