]> git.phdru.name Git - sqlconvert.git/blob - demo/demo-parse.py
Join demo scripts; add argparse parameters parsing
[sqlconvert.git] / demo / demo-parse.py
1 #! /usr/bin/env python
2 from __future__ import print_function
3
4 import argparse
5 import sys
6 from sqlparse import parse
7 from sqlconvert.print_tokens import print_tokens
8 from sqlconvert.process_tokens import find_error
9
10
11 def parse_queries(*queries):
12     for query in queries:
13         for parsed in parse(query, encoding='utf-8'):
14             print("----------")
15             if find_error(parsed):
16                 print("ERRORS IN QUERY")
17             print_tokens(parsed, encoding='utf-8')
18             print()
19             parsed._pprint_tree()
20         print("----------")
21
22
23 def parse_test(_args):
24     parse_queries(
25         "SELECT * FROM `mytable`; -- line-comment",
26         "INSERT into /* inline comment */ mytable VALUES (1, 'one')",
27         "/*! directive*/ INSERT INTO `MyTable` (`Id`, `Name`) "
28         "VALUES (1, 'one')"
29     )
30
31
32 def parse_sql(args):
33     parse_queries(*args.lines)
34
35
36 def parse_file(args):
37     infile = open(args.filename, 'rt')
38     lines = infile.readlines()
39     infile.close()
40     parse_queries(*lines)
41
42
43 if __name__ == '__main__':
44     main_parser = argparse.ArgumentParser(description='Parse')
45     subparsers = main_parser.add_subparsers(help='Commands')
46
47     parser = subparsers.add_parser('sql', help='SQL from command line')
48     parser.add_argument('lines', nargs='+', help='SQL lines')
49     parser.set_defaults(func=parse_sql)
50
51     parser = subparsers.add_parser('test', help='SQL from test data')
52     parser.set_defaults(func=parse_test)
53
54     parser = subparsers.add_parser('file', help='SQL from a file')
55     parser.add_argument('filename', help='SQL file')
56     parser.set_defaults(func=parse_file)
57
58     args = main_parser.parse_args()
59     args.func(args)