]> git.phdru.name Git - sqlconvert.git/blob - demo/parse-sql.py
Add MySQL-specific remove_directives() and process_statement()
[sqlconvert.git] / demo / parse-sql.py
1 #! /usr/bin/env python
2 from __future__ import print_function
3
4 import sys
5 from sqlparse import parse
6 from sqlconvert.print_tokens import print_tokens
7 from sqlconvert.process_mysql import process_statement
8 from sqlconvert.process_tokens import find_error
9
10
11 def main(*queries):
12     for query in queries:
13         for parsed in parse(query):
14             print("----------")
15             if find_error(parsed):
16                 print("ERRORS IN QUERY")
17             process_statement(parsed)
18             print_tokens(parsed)
19             print()
20             parsed._pprint_tree()
21         print("----------")
22
23
24 def test():
25     main(
26         "SELECT * FROM `mytable`; -- line-comment",
27         "INSERT into /* inline comment */ mytable VALUES (1, 'one')",
28         "/*! directive*/ INSERT INTO `MyTable` (`Id`, `Name`) "
29         "VALUES (1, 'one')"
30     )
31
32
33 if __name__ == '__main__':
34     if len(sys.argv) <= 1:
35         sys.exit("Usage: %s [-t | sql_query_string [; sql_query_string ...]]" %
36                  sys.argv[0])
37     if sys.argv[1] == '-t':
38         test()
39     else:
40         queries = sys.argv[1:]
41         main(*queries)