我已经进行了一些搜索,并认为在尝试重新发明轮子之前我应该先问一下。
我希望构建一个参数数量未知的 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)
