2

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

我正在寻找使用未知数量的参数构建一个 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 ......

非常感谢

乔恩

4

2 回答 2

1

只需您可以这样做,

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)
于 2013-04-09T01:46:33.830 回答
0

如果完全支持 sql 样式查询,您可以将其放在一个列表中,并生成如下查询:

items = [1,2,3,4,5]
query = 'select * from table where item in (%s)' % ','.join(items)
于 2013-04-09T01:42:57.960 回答