21 toolbase.ToolBase.__init__(self, name='runquery', desc='Run configured queries.') |
21 toolbase.ToolBase.__init__(self, name='runquery', desc='Run configured queries.') |
22 self.parser.add_argument('target', nargs='?', metavar='target', type=str, help='Target database') |
22 self.parser.add_argument('target', nargs='?', metavar='target', type=str, help='Target database') |
23 self.parser.add_argument('-c', dest='config', type=str, help='Additional config file (besides pgtoolkit.conf).') |
23 self.parser.add_argument('-c', dest='config', type=str, help='Additional config file (besides pgtoolkit.conf).') |
24 self.parser.add_argument('-q', dest='queries', metavar='QUERY', nargs='*', help='Queries to run.') |
24 self.parser.add_argument('-q', dest='queries', metavar='QUERY', nargs='*', help='Queries to run.') |
25 self.parser.add_argument('-f', dest='file', metavar='FILE', help='Read query from file.') |
25 self.parser.add_argument('-f', dest='file', metavar='FILE', help='Read query from file.') |
|
26 self.parser.add_argument('--one-query-per-line', action='store_true', help='When reading queries from file, consider each line as separate query.') |
26 self.parser.add_argument('-p', '--parameter', dest='parameters', metavar='PARAM=VALUE', nargs='*', |
27 self.parser.add_argument('-p', '--parameter', dest='parameters', metavar='PARAM=VALUE', nargs='*', |
27 help="If query should be used as format template, these parameters will be substituted.") |
28 help="If query should be used as format template, these parameters will be substituted.") |
28 self.parser.add_argument('--output-file', dest='output_file', metavar='OUTPUT_FILE', help='Write query result in specified file.') |
29 self.parser.add_argument('--output-file', dest='output_file', metavar='OUTPUT_FILE', help='Write query result in specified file.') |
29 self.parser.add_argument('--format', dest='format', metavar='FORMAT', help='Format string for each line in output file (using Python\'s format()).') |
30 self.parser.add_argument('--format', dest='format', metavar='FORMAT', help='Format string for each line in output file (using Python\'s format()).') |
30 |
31 |
43 self.queries = self.args.queries or self.config.queries |
44 self.queries = self.args.queries or self.config.queries |
44 # read query from file |
45 # read query from file |
45 if self.args.file: |
46 if self.args.file: |
46 with open(self.args.file, 'r', encoding='utf8') as f: |
47 with open(self.args.file, 'r', encoding='utf8') as f: |
47 data = f.read() |
48 data = f.read() |
|
49 if self.args.one_query_per_line: |
|
50 file_queries = [ln for ln in data.splitlines() if not ln.lstrip().startswith('--')] |
|
51 self.queries = file_queries + self.queries |
|
52 else: |
48 self.queries.insert(0, data) |
53 self.queries.insert(0, data) |
49 # prepare parameters |
54 # prepare parameters |
50 self._prepare_parameters(self.args.parameters) |
55 self._prepare_parameters(self.args.parameters) |
51 if self.config.log_path: |
56 if self.config.log_path: |
52 self.init_file_logs(self.config.log_path) |
57 self.init_file_logs(self.config.log_path) |