为什么这个SQL查询在python中不起作用?

时间:2013-11-16 20:02:57

标签: python sql database web2py

我有一个函数findParent,它接受​​一个字符串,将它与db中的其他字符串进行比较,然后返回另一个字符串。我在.py文件中写了这个。

products=db(findParent(db.product_info.source_place)==auth.user.place).select()

问题是,db.product_info.source_place没有从source_place中删除db,而是发送字符串本身,即findParent收到db.product_info.source_place但不是相应的值来自db

我做错了什么?

1 个答案:

答案 0 :(得分:0)

在比较两个字段时,例如:

products=db(table1.field1==table2.field2).select()

在这两个字段上应用连接后返回一个表。 当您使用findParent(db.product_info.source_place)时,findParent只是考虑为字符串db.product_info.source_place,因为实际上并没有为表中的所有行调用它并调用一次并进行计算,然后auth.user的所有行{1}}与地点列的返回值进行比较。

添加解决方案:

行=分贝(db.product_info)。选择(db.product_info.source_place) listwantedsource = [] 对于行中的行: listwantedsource.append(findParent(row.source_place)) 产品=分贝(auth.user.place.belongs(listwantedsource))。选择()