Mercurial > repos > iuc > sqlite_to_tabular
annotate query_db.py @ 1:c1b700bc0150 draft
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 81f69ad5f39223059c40501e55ac777d3feca845
| author | iuc | 
|---|---|
| date | Fri, 18 Aug 2017 16:48:20 -0400 | 
| parents | 859064f07be4 | 
| children | 6e72fd26a9d3 | 
| rev | line source | 
|---|---|
| 
0
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
1 #!/usr/bin/env python | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
2 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
3 from __future__ import print_function | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
4 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
5 import re | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
6 import sqlite3 as sqlite | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
7 import sys | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
8 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
9 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
10 TABLE_QUERY = \ | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
11 """ | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
12 SELECT name, sql | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
13 FROM sqlite_master | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
14 WHERE type='table' | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
15 ORDER BY name | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
16 """ | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
17 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
18 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
19 def regex_match(expr, item): | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
20 return re.match(expr, item) is not None | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
21 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
22 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
23 def regex_search(expr, item): | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
24 return re.search(expr, item) is not None | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
25 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
26 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
27 def regex_sub(expr, replace, item): | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
28 return re.sub(expr, replace, item) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
29 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
30 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
31 def get_connection(sqlitedb_path, addfunctions=True): | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
32 conn = sqlite.connect(sqlitedb_path) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
33 if addfunctions: | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
34 conn.create_function("re_match", 2, regex_match) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
35 conn.create_function("re_search", 2, regex_search) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
36 conn.create_function("re_sub", 3, regex_sub) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
37 return conn | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
38 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
39 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
40 def describe_tables(conn, outputFile): | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
41 try: | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
42 c = conn.cursor() | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
43 tables_query = TABLE_QUERY | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
44 rslt = c.execute(tables_query).fetchall() | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
45 for table, sql in rslt: | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
46 print("Table %s:" % table, file=outputFile) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
47 try: | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
48 col_query = 'SELECT * FROM %s LIMIT 0' % table | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
49 cur = conn.cursor().execute(col_query) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
50 cols = [col[0] for col in cur.description] | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
51 print(" Columns: %s" % cols, file=outputFile) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
52 except Exception as exc: | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
53 print("Warning: %s" % exc, file=sys.stderr) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
54 except Exception as e: | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
55 exit('Error: %s' % (e)) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
56 exit(0) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
57 | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
58 | 
| 
1
 
c1b700bc0150
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 81f69ad5f39223059c40501e55ac777d3feca845
 
iuc 
parents: 
0 
diff
changeset
 | 
59 def run_query(conn, query, outputFile, no_header=False, comment_char='#'): | 
| 
0
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
60 cur = conn.cursor() | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
61 results = cur.execute(query) | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
62 if not no_header: | 
| 
1
 
c1b700bc0150
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 81f69ad5f39223059c40501e55ac777d3feca845
 
iuc 
parents: 
0 
diff
changeset
 | 
63 outputFile.write("%s%s\n" % (comment_char, '\t'.join( | 
| 
 
c1b700bc0150
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 81f69ad5f39223059c40501e55ac777d3feca845
 
iuc 
parents: 
0 
diff
changeset
 | 
64 [str(col[0]) for col in cur.description]))) | 
| 
0
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
65 for i, row in enumerate(results): | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
66 outputFile.write("%s\n" % '\t'.join( | 
| 
 
859064f07be4
planemo upload for repository https://github.com/galaxyproject/tools-iuc/tree/master/tools/query_tabular commit 74915fc9cee746bbce1c4b507e13231259de177d
 
iuc 
parents:  
diff
changeset
 | 
67 [str(val) if val is not None else '' for val in row])) | 
