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