123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657 |
- #!/usr/bin/env vpython3
- # Copyright 2018 The Chromium Authors. All rights reserved.
- # Use of this source code is governed by a BSD-style license that can be
- # found in the LICENSE file.
- import argparse
- import contextlib
- import csv
- import os
- import sqlite3
- import sys
- DEFAULT_DATABASE_PATH = os.path.abspath(os.path.join(
- os.path.dirname(__file__), '_cached_data', 'soundwave', 'soundwave.db'))
- @contextlib.contextmanager
- def OutputStream(filename):
- if filename is None or filename == '-':
- yield sys.stdout
- else:
- with open(filename, 'w') as f:
- yield f
- def EncodeUnicode(v):
- return v.encode('utf-8') if isinstance(v, unicode) else v
- def main():
- parser = argparse.ArgumentParser()
- parser.add_argument(
- 'table', help='Name of a table to export')
- parser.add_argument(
- '--database-file', default=DEFAULT_DATABASE_PATH,
- help='File path for database where to store data.')
- parser.add_argument(
- '--output', '-o',
- help='Where to write the csv output, defaults to stdout.')
- args = parser.parse_args()
- con = sqlite3.connect(args.database_file)
- try:
- cur = con.execute('SELECT * FROM %s' % args.table)
- header = [c[0] for c in cur.description]
- with OutputStream(args.output) as out:
- writer = csv.writer(out)
- writer.writerow(header)
- for row in cur:
- writer.writerow([EncodeUnicode(v) for v in row])
- finally:
- con.close()
- if __name__ == '__main__':
- sys.exit(main())
|