首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Python -使用`-`作为范围构建动态sql查询

Python -使用`-`作为范围构建动态sql查询
EN

Stack Overflow用户
提问于 2013-04-09 09:37:23
回答 2查看 961关注 0票数 2

我已经做了一些搜索,在尝试重新发明轮子之前,我想我应该问一下。

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

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

我需要建立一个sql风格的查询(实际上是arcpy),它将返回字段项的所有这些值。

我可以很容易地把这些都放到一个列表中,比如mylist =1,2,3,4,5,6,6,7,8,9,10,11,12

但是我需要构建查询,我猜应该是这样的

代码语言:javascript
复制
item = 1 or item = 2 or ......

非常感谢

琼恩

EN

回答 2

Stack Overflow用户

发布于 2013-04-09 09:46:34

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

代码语言:javascript
复制
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))

检查结果是什么

代码语言:javascript
复制
>>> result
[1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12]

查询它,

代码语言:javascript
复制
'SELECT * FROM table WHERE id in (%s)' % ','.join(str(item) for item in result)
票数 1
EN

Stack Overflow用户

发布于 2013-04-09 09:42:58

如果完全支持sql风格的查询,您可以将其放在列表中,并生成如下查询:

代码语言:javascript
复制
items = [1,2,3,4,5]
query = 'select * from table where item in (%s)' % ','.join(items)
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15891884

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档