如何使用web2py smart_query进行GET请求?

时间:2017-07-06 19:56:49

标签: python rest get web2py web2py-modules

所以我试图在web2py中使用smart_query来查找数据库中的特定值,但我能找到的唯一解释是在web2py书中,并不是很清楚。本书中的示例GET请求格式如下:

def GET(search):
    try:
        rows = db.smart_query([db.person, db.pet], search).select()
        return dict(result=rows)
    except:
        ...

我很困惑我会用什么值代替db.person和db.pet。以下是本书所说的内容:

The method db.smart_query takes two arguments:
    a list of field or table that should be allowed in the query
    a string containing the query expressed in natural language

我认为第一个值是我正在搜索的数据库,但后来我不知道第二个值是什么。这本书听起来应该是我正在搜索的字符串,但我认为这就是变量搜索的用途。

有人可以帮我理解每个论点到底应该做些什么吗?

1 个答案:

答案 0 :(得分:0)

smart_query的第一个参数是DAL Table和/或Field对象的列表(列表中的Table对象将简单地扩展为包含所有表的字段)。此列表确定查询中可包含哪些字段。

第二个参数是查询本身,它可以包括字段名称和比较运算符(以及它们的自然语言对应物)以及表达连词和析取的“和”和“或”。要了解允许的内容,您可以检查相关代码here

SQLFORM.grid高级搜索小部件会生成最终由smart_query解析的查询,因此为了更好地了解如何生成此类查询,请尝试创建测试SQLFORM.grid并使用用户界面中的搜索小部件,用于查看其生成的查询。