0

我想将 sql 查询的所有列定义拆分为单独的字符串。

所以:

 `citizen_group` int(10) NOT NULL,
  `container_group` int(10) NOT NULL,
  PRIMARY KEY (`citizen_group`,`container_group`),
  KEY `fk_containergroup_readeraccess` (`container_group`)

进入:

['`citizen_group` int(10) NOT NULL', '`container_group` int(10) NOT NULL','PRIMARY KEY (`citizen_group`,`container_group`)',' KEY `fk_containergroup_readeraccess` (`container_group`)']

首先我使用split(','). 但是当 sql 具有多列主键时,这会产生问题。我不能指望每个定义都在一个新行上,所以我不能在换行上拆分。

如何拆分这些列定义?

4

1 回答 1

0

这个解决方案有点老套,我确信有更好的解决方案,但至少它可以完成工作。

编辑:更好的代码:

data = '''\
    `citizen_group` int(10) NOT NULL,
    `container_group` int(10) NOT NULL,
    PRIMARY KEY (`citizen_group`,`container_group`),
    KEY `fk_containergroup_readeraccess` (`container_group`)'''

data = data.replace('\n', '')
last = 0
result = []
paren = False
for i, j in enumerate(data):
    if j == '(':
        paren = True
    elif j == ')':
        paren = False
    if j == ',':
        if not paren:
            result.append(data[last:i])
            last = i + 1
result.append(data[last:])
result = map(str.strip, result)

print result

结果是

['`citizen_group` int10 NOT NULL', '`container_group` int(10) NOT NULL',
 'PRIMARY KEY (`citizen_group`,`container_group`)',
 'KEY `fk_containergroup_readeraccess` (`container_group`)']
于 2012-11-06T21:41:18.540 回答