Skip to main content
 首页 » 编程设计

Python之构建一个范围为 `-` 的动态 sql 查询

2025年05月04日12kerrycode

我已经进行了一些搜索,并认为在尝试重新发明轮子之前我应该​​先问一下。

我希望构建一个参数数量未知的 sql 查询。参数是 int 类型,它们是项目编号。

用户可以输入任意数量的项目,形式为1、2、3-10、12

我需要构建一个 sql 样式的查询(实际上是用于 arcpy),它将返回字段项的所有这些值。

我可以很容易地将这些全部拉到一个列表中,例如 mylist = [1,2,3,4,5,6,7,8,9,10,11,12]

但是我需要构建查询,我猜它会是这样的

item = 1 or item = 2 or ...... 

非常感谢

乔恩

请您参考如下方法:

简单地说,你可以这样做,

user_input = '1, 2, 3-10, 12' 
data = [item for item in user_input.split(', ')] 
result = [] 
 
for d in data: 
    if '-' in d: 
        result.extend(range(int(d.partition('-')[0], int(d.partition('-')[2])+2)) 
    else: 
        result.append(int(d)) 

检查结果是什么,

>>> result 
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12] 

查询它,

'SELECT * FROM table WHERE id in (%s)' % ','.join(str(item) for item in result)