Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql web2py-生成查询时遇到问题_Sql_Web2py - Fatal编程技术网

Sql web2py-生成查询时遇到问题

Sql web2py-生成查询时遇到问题,sql,web2py,Sql,Web2py,我在构建执行以下操作的查询时遇到问题: 车辆 *制造 *型号 *修剪 *零件号 *准确度 首先,我做一个查询,查找每个零件号的最高精度。我创建了一个字典,这样dic[零件号]=该零件号的最高精度 然后我想做第二个查询。我将make、model和trim进行匹配,以获得一些值。我接下来要做的是检查当前记录的准确度是否等于已知的最高准确度。基本上,我只想要准确度最高的记录(与品牌、型号、修剪明显匹配) 我的尝试: 查询&=(db.vehicle.accurity==dict[db.vehicle.p

我在构建执行以下操作的查询时遇到问题:

车辆
*制造
*型号
*修剪
*零件号
*准确度

首先,我做一个查询,查找每个零件号的最高精度。我创建了一个字典,这样dic[零件号]=该零件号的最高精度

然后我想做第二个查询。我将make、model和trim进行匹配,以获得一些值。我接下来要做的是检查当前记录的准确度是否等于已知的最高准确度。基本上,我只想要准确度最高的记录(与品牌、型号、修剪明显匹配)

我的尝试:
查询&=(db.vehicle.accurity==dict[db.vehicle.part\u编号])

我得到以下错误:
在0xsomeval处键入'exceptions.KeyError'glion.dal.Field对象


这是解决这个问题的最好办法吗?也许还有另一种方法可以得到我想要的结果。

这里有几件值得注意的事情。首先,为了保持整洁,您可能需要构建一个查询列表,然后使用如下函数减少查询:

def reduce_query_list(query_list, operator = 'and'):
    if operator == 'or':
        return reduce(lambda q01, q02:q01|q02, query_list) 
    elif operator == 'and':
        return reduce(lambda q01, q02:q01&q02, query_list) 
第二,在上面的代码中,您试图使用实际的db字段作为键,而不是使用存储在该字段表中的某个值(这可能会导致该异常)。你确定这就是你想要做的吗

编辑:

如果我理解正确,您的错误来自尝试将字段对象用作键。请尝试使用以下项作为密钥列表:

part_number_list = [value['part_number'] for value in db(db.vehicle).select()]

我希望键是正在考虑的记录的零件号的值。例如,我想检查每个记录,如果它的准确性是最高的,那么不要从结果集中删除记录。字典存储每个零件号的最高精度。对-您上面所做的似乎是使用DB表中的实际字段对象(而不是该字段中的任何值)作为键。相反,您希望用作键的是存储在该字段中的实际值。我将编辑上面的帖子,看看我是否能展示我认为你正在努力做的事情是可以做到的。