import json import math def printList(data): print(f"\t\t Lenght: {len(data)}") def printDict(data): print(f"\t\t Lenght: {len(data)}") def getListIndexElements(data, index): i=0 item=data[index] print(f"===================================") print(f"Type: {type(item)}") print(f"Item No: {index}") print(f"===================================") for key in item.keys(): content = item[str(key)] if type(content) is int: print(f" -> {key} | Integer | {content}") elif type(content) is str: print(f" -> {key} | String | {len(content)}") elif type(content) is list: print(f" -> {key} | List | {len(content)}") elif type(content) is dict: print(f" -> {key} | Dictionary | {len(content)}") print(f"===================================") def getLongerString(data, key, ceilMutpilpe): len_max = 0 longest_string="" for item in data: content = item[key] if isinstance(content, str): len_cur = len(content) if len_cur > len_max: len_max = len_cur longest_string = content return (ceilMutpilpe * math.ceil(len_max/ceilMutpilpe)) def getLongerDict(data, key, ceilMutpilpe): len_max = 0 longest_string="" for item in data: content = str(item[key]) if isinstance(content, str): len_cur = len(content) if len_cur > len_max: len_max = len_cur longest_string = content return (ceilMutpilpe * math.ceil(len_max/ceilMutpilpe)) def printSqlAlchemyOnlyString(data, index, primaryKey, dbName): item = data[index] print(f"Type: {type(item)}") print(f"Item No: {index}") print(f"=============================================") for key in item.keys(): content = item[str(key)] if type(content) is int: if key == primaryKey: print(f"{key} = {dbName}Column({dbName}Integer, primary_key=True)") else: print(f"{key} = {dbName}Column({dbName}Integer, nullable=True)") elif type(content) is str: content_lenght = getLongerString(data, key,5) print(f"{key} = {dbName}Column({dbName}String({content_lenght}), unique=False, nullable=True)") elif type(content) is list: content_lenght = getLongerDict(data, key,5) if content_lenght < 255: print(f"{key} = {dbName}Column({dbName}String({content_lenght}), unique=False, nullable=True)") else: print(f"{key} = {dbName}Column({dbName}Text, unique=False, nullable=True)") elif type(content) is dict: content_lenght = getLongerDict(data, key,5) if content_lenght < 255: print(f"{key} = {dbName}Column({dbName}String({content_lenght}), unique=False, nullable=True)") else: print(f"{key} = {dbName}Column({dbName}Text, unique=False, nullable=True)") print(f"=============================================") with open("iot/blueprints/utils/countries/states.json") as json_data: data = json.load(json_data) #getListIndexElements(data,0) printSqlAlchemyOnlyString(data,0,'id','db.')