]> git.phdru.name Git - sqlconvert.git/blob - mysql2sql/process_tokens.py
Group statements separated by semicolons
[sqlconvert.git] / mysql2sql / process_tokens.py
1
2 from sqlparse.sql import Statement
3 from sqlparse.tokens import Name, Error, Punctuation
4
5
6 def requote_names(token_list):
7     """Remove backticks, quote non-lowercase identifiers"""
8     for token in token_list.flatten():
9         if token.ttype is Name:
10             value = token.value
11             if (value[0] == "`") and (value[-1] == "`"):
12                 value = value[1:-1]
13             if value.islower():
14                 token.normalized = token.value = value
15             else:
16                 token.normalized = token.value = '"%s"' % value
17
18
19 def find_error(token_list):
20     """Find an error"""
21     for token in token_list.flatten():
22         if token.ttype is Error:
23             return True
24     return False
25
26
27 class StatementGrouper(object):
28     def __init__(self):
29         self.tokens = []
30         self.statements = []
31
32     def get_statements(self):
33         for statement in self.statements:
34             yield statement
35         self.statements = []
36
37     def process(self, tokens):
38         for token in tokens:
39             self.tokens.append(token)
40             if (token.ttype == Punctuation) and (token.value == ';'):
41                 self.statements.append(Statement(self.tokens))
42                 self.tokens = []
43
44     def close(self):
45         if self.tokens:
46             raise ValueError("Incomplete SQL statement")