-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathmaterializer.py
More file actions
31 lines (21 loc) · 867 Bytes
/
materializer.py
File metadata and controls
31 lines (21 loc) · 867 Bytes
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import json;
from sqlalchemy import *;
engine = create_engine('CONNECTION STRING')
connection = engine.connect()
with open('config.json', 'r') as jsonFile:
jsonString = jsonFile.read()
config = json.loads(jsonString)
snippets = config['snippets']
for snippet in snippets:
with open(snippets[snippet]) as snippetFile:
snippets[snippet] = snippetFile.read()
for view in config['views']:
with open(view['query_file'], 'r') as queryFile:
query = queryFile.read()
for snippet in snippets:
query = query.replace(snippet, snippets[snippet])
trans = connection.begin()
connection.execute('drop table if exists ' + view['name'] + ';')
connection.execute('create table ' + view['name'] + ' as ' + query)
connection.execute('grant select on ' + view['name'] + ' to ' + view['user_list'] + ';')
trans.commit()