runquery.py
changeset 99 245646538743
parent 93 b72591087495
equal deleted inserted replaced
98:024299702087 99:245646538743
    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)