当您想在Python
中编写一个查询(将从SQLite
数据库中)选择所有包含300页的书籍时,您将写下:
numsPages = 300
cur.execute("select * from books where number_of_pages = :numsPages", locals())
问题是当您想要选择具有某些页面数量
的书籍时lst = computeListFromVariousInputs() # lst is list containing natural numbers
cur.execute("select * from books where number_of_pages in :lst", locals())
以上陈述是不可能的。
在语句中编写很多or
个运算符很困难,所以我想使用in
运算符。
如果不使用许多or
运算符并使用某些Python
列表或其他数据结构,您将如何编写查询?
也许,这个例子看起来不实用(而且确实如此)但是当我使用这个例子时,这个问题更容易理解。
答案 0 :(得分:1)
答案 1 :(得分:1)
您可以自己格式化语句,例如:
a = [100, 200, 300, 400]
## The a bit more formatting is used because the list contains integers, i.e., the join with string casting
stmt = 'select * from books where number_of_pages in ({0})'.format(', '.join([str(v) for v in a]))
print stmt
>>> select * from books where number_of_pages in (100, 200, 300, 400)