我想将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具有多列主键时,这会产生问题。我不能指望每个定义都在一个新的行上,所以我不能在新行上拆分。
如何拆分这些列定义?
答案 0 :(得分:0)
这个解决方案有点hacky,我确信有更好的解决方案,但至少它完成了工作。
编辑:更好的代码:
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`)']