Python 在查询中使用列表而不是数字或字符串

Python 在查询中使用列表而不是数字或字符串,python,web2py,Python,Web2py,我想在查询中使用一个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列表,如下所示:

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循环


关于

很难知道你想问什么,但是从db.define_table的语法来看,我猜测你在web2py上,试图做一个查询,在你的数字列表中获取任何int

您可以像这样使用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)
您可以在中阅读更多详细信息

由于OP回答只包含对字符串有效的内容,我建议使用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 ...

假设您想要cusnumber位于ListOfNumber中的记录集,则应使用.Attensions方法:


数字列表不是整数。你为什么不试着把它们连接到一个逗号分隔的字符串或其他什么东西中呢?你想单独过滤列表中的所有数字,还是cusnumber是一个包含数字列表的字段?谢谢你的帮助。。是的,我正在使用Web2py。。。您的解决方案适用于与我之前的解决方案不同的字符串字段,例如:def custmr:listOfNumbers=['Adam','Jone']qry=dbdb.customer.name.containsStofNumber,all=False.selectdb.customer.cusnumber print qry我的问题是如何使其适用于main中的int字段question@Abdulkareem,好吧,我没意识到。然后迭代可能是最好的方法,答案将被更新
qry = db(db.customer.cusnumber.belongs(listOfNumbers)).select(db.customer.name)