db = 'test.db' table = 'Table' releaseLabel = "releaseLabel" applicationString = "applicationString" account = "account" creationDate = "creationDate" def create_table(overwrite: bool): if overwrite and table_exists(table): with sqlite3.connect(db) as conn: conn.execute("drop table {}".format(table)) with sqlite3.connect(db) as conn: conn.execute('''create table JobFlow( accountId text, releaseLabel text, applicationString text, creationDateTime text )''') def table_exists(table: str) -> bool: with sqlite3.connect(db) as conn: try: conn.execute("select * from {} limit 1".format(table)) print("Table DOES exists ") return True except sqlite3.OperationalError as e: print("Table DOES NOT exist") return False def populate_table(): values = [('12345', 'emr-5.10.0',json.dumps([{"Name": "Hive", "Version": "1.2.1"}]),"2019-01-01 00:00:01Z"), ('12345', 'emr-5.11.0',json.dumps([{"Name": "Spark", "Version": "1.2.2"}]),"2019-01-01 00:00:05Z"), ('12345', 'emr-5.12.0',json.dumps([{"Name": "Hbase", "Version": "1.2.2"},{"Name": "Hive", "Version": "1.2.1"}]),"2019-01-01 00:00:15Z"), ('12345', 'emr-5.10.0',json.dumps([{"Name": "Hive", "Version": "1.2.3"}]),"2019-01-01 00:00:29Z")] with sqlite3.connect(db) as conn: conn.executemany("insert into {} values(?,?, ?, ?)".format(table),values) def query_table(): with sqlite3.connect(db) as conn: for row in conn.execute("select * from {}".format(table)): print(row) for row in conn.execute("select count(*), releaseLabel from {} group by releaseLabel".format(table)): print(row) for row in conn.execute("select releaseLabel from {}".format(table)): print(row) for row in conn.execute("select accountId, count(*) from {} group by accountId".format(table)): print(row)