#! /usr/bin/env python3 from email.mime.multipart import MIMEMultipart from email.mime.text import MIMEText from contextlib import closing from sql import sql_queries import snowflake.connector import psycopg2 import smtplib import argparse import sys import json import datetime with open('config.json', 'r') as f: config = json.load(f) sf_user = config['snowflake']["user"] sf_password = config['snowflake']["password"] sf_account = config['snowflake']["account"] sf_warehouse = config['snowflake']['warehouse'] def create_arg_parser(): parser = argparse.ArgumentParser() parser.add_argument('-m', '--mail', nargs='+', action='store', dest='recipients', type=str) parser.add_argument('-p', '--print', action="store_const", const=True) return parser def snowflake_fetch_data(sql_query) -> dict: ctx = snowflake.connector.connect( user=sf_user, password=sf_password, account=sf_account, warehouse=sf_warehouse ) cs = ctx.cursor(snowflake.connector.DictCursor) try: cs.execute(sql_query) result_dict = cs.fetchall() finally: cs.close() ctx.close() return result_dict def check_1() -> dict: result_dict = {} ### Check 1 EXPLORATION → RAW TIKTOK_TRENDS_DAILY (expected result: Counts match inside every step) ################################################ tmp_sf_check_1 = snowflake_fetch_data(sql_queries.sf_check_1) result_dict = tmp_sf_check_1 return result_dict ################# run the all steps ###################### def run_steps() -> dict: result_dict = check_1() message_dict = result_dict return message_dict if __name__ == '__main__': # # check command line parameters and print or email result parser = create_arg_parser() arg_list = parser.parse_args() if len(sys.argv[1:]) > 0: result = run_steps() with open('/tmp/TikTok_Dashboard_log_00_30.json', 'w') as json_file: json.dump(result, json_file, indent=4) if arg_list.print: print(json.dumps(result, indent=4)) else: parser.print_help()