CoolFace
Apppublic

ignitariumcloud/knowledge_model

sourceHugging Faceupdated 2y agoView on Hugging Face
0likes
sql.py130 linesDownload Raw Back to root
1import sqlite32from sqlite3 import Error3import csv4import pandas as pd5import os6 7 8def create_connection(db_file):9    """ create a database connection to a database that resides10        in the memory11    """12    conn = None;13    try:14        conn = sqlite3.connect(db_file)15        return conn16    17    except Error as e:18        print(e)19 20    return conn21 22 23def create_table(conn, create_table_sql, table_name):24    """ create a table from the create_table_sql statement25    :param conn: Connection object26    :param create_table_sql: a CREATE TABLE statement27    :return:28    """29    try:30        c = conn.cursor()31        c.execute(f"""DROP TABLE IF EXISTS {table_name}""")32        c.execute(create_table_sql)33    except Error as e:34        print(e)35 36 37def insert_values(conn, task, sql):38 39    cur = conn.cursor()40    cur.execute(sql, task)41    conn.commit()42    return cur.lastrowid43 44 45def populate(csv_file, db_file, table_insert):46    47    conn = create_connection(db_file)48    with conn:49        50        51        with open(csv_file, mode ='r')as file:52            csvfile = csv.reader(file)53 54            for n,lines in enumerate(csvfile):55                56                if n>0:57                    lines = tuple(i for i in lines)58                    insert_values(conn, lines, table_insert)59 60                else:pass61 62def main():63 64    # name = "sql_pdf.xlsx"65    name="ticket_dataset.xlsx"66    excel_file = (pd.read_excel(name))67    csv_file = f"""{name.split(".")[0]}.csv"""68    excel_file.to_csv(csv_file,69                    index=None,70                    header=True)71    column = [x for x in excel_file.columns]72    column_type = {}73    type_map = {74        "<class 'str'>": "TEXT",75        "<class 'int'>": "INTEGER",76        "<class 'float'>": "REAL",77    }78 79 80    for i in range(len(column)):81        datatype = {}82        for j in excel_file.values:83            if type(j[i]) not in list(datatype.keys()):datatype[type(j[i])] = 184            else: datatype[type(j[i])] += 185        86        ma_x = 087        max_type = "<class 'str'>"88        89        for k in list(datatype.keys()):90            if ma_x < datatype[k]:max_type = str(k)91 92        try:93            column_type[column[i]] = type_map[max_type]94 95        except KeyError:96            column_type[column[i]] = "TEXT"97 98    print(column_type)99 100    table_construct = f"""CREATE TABLE IF NOT EXISTS {name.split(".")[0]}( """101    table_insert = f"""INSERT INTO {name.split(".")[0]}("""102    table_values = f"""VALUES ("""103    for l in list(column_type.keys()):104        table_construct += f"""{l} {column_type[l]}, """105        table_insert += f"""{l}, """106        table_values += "?, "107    table_construct = f"""{table_construct[:-2]});"""108    table_values = f"""{table_values[:-2]})"""109    table_insert = f"""{table_insert[:-2]})\n{table_values}"""110 111    print(table_construct)112    print("\n\n", table_insert)113 114    database = f"""{name.split(".")[0]}.db"""115    116    conn = create_connection(database)117 118    # create tables119    if conn is not None:120        # create projects table121        create_table(conn, table_construct, name.split(".")[0])122    else:123        print("Error! cannot create the database connection.")124 125 126    populate(csv_file, database, table_insert)127 128if __name__ == '__main__':129    main()130