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 に答える