我想在查询中使用一个int列表,如下所示:
db.define_table('customer',Field('name'),Field('cusnumber','integer'))
def custmr():
listOfNumbers=[22,12,76,98]
qry=db(db.customer.cusnumber==listOfNumbers).select(db.customer.name)
print qry
这引起了一个问题,即查询中唯一接受的数据类型是int或str。
有没有办法避免这个问题(最好不要使用for循环)
此致
答案 0 :(得分:0)
很难知道你要问的是什么,但是根据db.define_table(...)
的语法,我猜测你是在 web2py 并试图做一个查询在listOfNumbers
。
您可以使用contains
这样的属性:
# if all=True, cusnumber will need to contains all listOfNumbers, False means any
qry=db(db.customer.cusnumber.contains(listOfNumbers, all=False)).select(db.customer.name)
您可以在HERE
中详细了解详情由于OP回复称contains
仅适用于字符串,我建议使用for/loop
将是更好的答案:
listOfNumbers=[22,12,76,98]
for each in listOfNumbers:
qry=db(db.customer.cusnumber==each).select(db.customer.name)
# ... do your stuff or whatever ...
答案 1 :(得分:0)
假设您想要cusnumber
位于listOfNumbers
的记录集,则应使用.belongs
方法:
qry = db(db.customer.cusnumber.belongs(listOfNumbers)).select(db.customer.name)