拆分字符串以创建SQL过滤器

时间:2014-02-14 12:31:08

标签: python sql sqlalchemy

您好我有一个列表项,这是一个像这样的字符串:

scope_items = [“4760 5.2 5.1,acs 8.0.0 7.1,chicago 4.1.0 4.0.0 3.2.0 1.0.1 3.0.0”]

我设法在名为scope_list

的列表中“分裂”了
scope_list = ['4760', '5.2', '5.1,', 'acs', '8.0.0', '7.1,', 'chicago', '4.1.0', '4.0.0', '3.2.0', '1.0.1', '3.0.0']

但是你可以看到逗号(,)也存储了......

我想创建一个SQL语句,如:

WHERE (
           columnvalue1 = 4760 
       AND columnvalue2 IN (5.2,5.1)
      ) 
   OR (
           columnvalue1="acs" 
       AND columnvalue2 IN (8.0.0,7.1) 
      )
   OR (
           columnvalue1  = "chicago" 
       AND colmnvalue2 IN (4.1.0, 4.0.0, 3.2.0, 1.0.1, 3.0.0)
      )

我正在使用SQLAlchemy,我管理了第一部分(在OR之前),如下所示:

or_args = [and_(
table1.c.columnvalue1 == scope[0], 
table1.c.columnvalue12.in_(scope[1:])) for scope in scope_list]

如何在每个,之后对所有其他值执行相同的操作?

1 个答案:

答案 0 :(得分:0)

您可以在逗号上split

scope_groups = scope_items[0].split(", ")

现在scope_groups中的每个元素都是您规则的一个组,其中第0个项是列,其他任何项都是值:

for group in scope_groups:
    group = group.split(" ")
    # use group[0] and group[1:]