2 from sqlparse import parse
3 from sqlparse.sql import Statement
4 from sqlparse.tokens import Name, Error, Punctuation, Comment, Newline, \
8 def requote_names(token_list):
9 """Remove backticks, quote non-lowercase identifiers"""
10 for token in token_list.flatten():
11 if token.ttype is Name:
13 if (value[0] == "`") and (value[-1] == "`"):
16 token.normalized = token.value = value
18 token.normalized = token.value = '"%s"' % value
21 def find_error(token_list):
23 for token in token_list.flatten():
24 if token.ttype is Error:
29 class StatementGrouper(object):
35 def process_line(self, line):
38 tokens = parse('\n'.join(lines))[0]
39 self.process_tokens(tokens)
42 def process_tokens(self, tokens):
44 self.tokens.append(token)
45 if (token.ttype == Punctuation) and (token.value == ';'):
46 self.statements.append(Statement(self.tokens))
49 def get_statements(self):
50 for statement in self.statements:
55 for token in self.tokens:
56 if (token.ttype not in (Comment.Single, Comment.Multiline,
57 Newline, Whitespace)):
58 raise ValueError("Incomplete SQL statement: %s" % self.tokens)