comparison sqlite_to_tabular.py @ 2:bc50a7b7f246 draft

Uploaded
author jjohnson
date Sun, 04 Oct 2015 10:51:12 -0400
parents 30a37dd92ccd
children f079ea3884b3
comparison
equal deleted inserted replaced
1:1819a06a01eb 2:bc50a7b7f246
8 def __main__(): 8 def __main__():
9 #Parse Command Line 9 #Parse Command Line
10 parser = optparse.OptionParser() 10 parser = optparse.OptionParser()
11 parser.add_option( '-s', '--sqlitedb', dest='sqlitedb', default=None, help='The SQLite Database' ) 11 parser.add_option( '-s', '--sqlitedb', dest='sqlitedb', default=None, help='The SQLite Database' )
12 parser.add_option( '-q', '--query', dest='query', default=None, help='SQL query' ) 12 parser.add_option( '-q', '--query', dest='query', default=None, help='SQL query' )
13 parser.add_option( '-Q', '--query_file', dest='query_file', default=None, help='SQL query file' )
13 parser.add_option( '-n', '--no_header', dest='no_header', action='store_true', default=False, help='Include a column headers line' ) 14 parser.add_option( '-n', '--no_header', dest='no_header', action='store_true', default=False, help='Include a column headers line' )
14 parser.add_option( '-o', '--output', dest='output', default=None, help='Output file for query results' ) 15 parser.add_option( '-o', '--output', dest='output', default=None, help='Output file for query results' )
15 (options, args) = parser.parse_args() 16 (options, args) = parser.parse_args()
16 17
17 # determine output destination 18 # determine output destination
23 print >> sys.stderr, "failed: %s" % e 24 print >> sys.stderr, "failed: %s" % e
24 exit(3) 25 exit(3)
25 else: 26 else:
26 outputFile = sys.stdout 27 outputFile = sys.stdout
27 28
28 if (options.query is None): 29 query = None
30 if (options.query_file != None):
31 with open(options.query_file,'r') as fh:
32 query = ''
33 for line in fh:
34 query += line
35 elif (options.query != None):
36 query = options.query
37
38 if (query is None):
29 try: 39 try:
30 conn = sqlite.connect(options.sqlitedb) 40 conn = sqlite.connect(options.sqlitedb)
31 c = conn.cursor() 41 c = conn.cursor()
32 tables_query = "SELECT name,sql FROM sqlite_master WHERE type='table' ORDER BY name" 42 tables_query = "SELECT name,sql FROM sqlite_master WHERE type='table' ORDER BY name"
33 rslt = c.execute(tables_query).fetchall() 43 rslt = c.execute(tables_query).fetchall()
40 print >> sys.stderr, " Columns: %s" % cols 50 print >> sys.stderr, " Columns: %s" % cols
41 except Exception, exc: 51 except Exception, exc:
42 print >> sys.stderr, "Error: %s" % exc 52 print >> sys.stderr, "Error: %s" % exc
43 except Exception, exc: 53 except Exception, exc:
44 print >> sys.stderr, "Error: %s" % exc 54 print >> sys.stderr, "Error: %s" % exc
45 exit(1) 55 exit(0)
46 #if not sqlite.is_read_only_query(options.query): 56 #if not sqlite.is_read_only_query(query):
47 # print >> sys.stderr, "Error: Must be a read only query" 57 # print >> sys.stderr, "Error: Must be a read only query"
48 # exit(2) 58 # exit(2)
49 try: 59 try:
50 conn = sqlite.connect(options.sqlitedb) 60 conn = sqlite.connect(options.sqlitedb)
51 cur = conn.cursor() 61 cur = conn.cursor()
52 results = cur.execute(options.query) 62 results = cur.execute(query)
53 if not options.no_header: 63 if not options.no_header:
54 outputFile.write("#%s\n" % '\t'.join([str(col[0]) for col in cur.description])) 64 outputFile.write("#%s\n" % '\t'.join([str(col[0]) for col in cur.description]))
55 # yield [col[0] for col in cur.description] 65 # yield [col[0] for col in cur.description]
56 for i,row in enumerate(results): 66 for i,row in enumerate(results):
57 # yield [val for val in row] 67 # yield [val for val in row]