]> git.phdru.name Git - sqlconvert.git/blob - demo/demo-process.py
Make begin/end separators in demo scripts more evident
[sqlconvert.git] / demo / demo-process.py
1 #! /usr/bin/env python
2 from __future__ import print_function
3
4 import argparse
5 import sys
6 from sqlconvert.process_mysql import process_statement
7 from sqlconvert.print_tokens import print_tokens
8 from sqlconvert.process_tokens import find_error, StatementGrouper
9
10
11 def process_lines(*lines):
12     grouper = StatementGrouper(encoding='utf-8')
13     for line in lines:
14         grouper.process_line(line)
15         if grouper.statements:
16             for statement in grouper.get_statements():
17                 print("----- -----")
18                 if find_error(statement):
19                     print("ERRORS IN QUERY")
20                 process_statement(statement)
21                 print_tokens(statement, encoding='utf-8')
22                 print()
23                 statement._pprint_tree()
24             print("-----/-----")
25     tokens = grouper.close()
26     if tokens:
27         for token in tokens:
28             print_tokens(token, encoding='utf-8')
29             print(repr(token))
30
31
32 def process_test(_args):
33     process_lines(
34         "SELECT * FROM `mytable`; -- line-comment",
35         "INSERT into /* inline comment */ mytable VALUES (1, 'one');",
36         "/*! directive*/ INSERT INTO `MyTable` (`Id`, `Name`) "
37         "VALUES (1, 'one');"
38     )
39
40
41 def process_sql(args):
42     process_lines(*args.lines)
43
44
45 def process_file(args):
46     infile = open(args.filename, 'rt')
47     lines = infile.readlines()
48     infile.close()
49     process_lines(*lines)
50
51
52 if __name__ == '__main__':
53     main_parser = argparse.ArgumentParser(description='Group')
54     subparsers = main_parser.add_subparsers(help='Commands')
55
56     parser = subparsers.add_parser('sql', help='SQL from command line')
57     parser.add_argument('lines', nargs='+', help='SQL lines')
58     parser.set_defaults(func=process_sql)
59
60     parser = subparsers.add_parser('test', help='SQL from test data')
61     parser.set_defaults(func=process_test)
62
63     parser = subparsers.add_parser('file', help='SQL from a file')
64     parser.add_argument('filename', help='SQL file')
65     parser.set_defaults(func=process_file)
66
67     args = main_parser.parse_args()
68     args.func(args)