import pandas as pd
from numba import jit
from getpass import getpass

from DBConfig import SO # SOTorrent18_12 configure .py file


### MySQLのクエリを引数に与えるとデータフレームで返ってくるようにしています ###

class SQL():
    
    
    def __init__(self):
        print('Authentication MySQL Login: Enter the password')
        password = getpass()
        self.password = password
        
    
    # redirect query
    @jit
    def so_gets(self, query): # queryにクエリの文字列を入れる
        try:
            self.query = query
            print(f'   Query: {query}')
            print('Connecting...')
            data = pd.read_sql(self.query, SO.config(self.password))
            print('Successfuly!!!')
            print(f'Return Data Rows：{len(data)}×{len(data.columns)}')
            return data
        
        except Exception as e:
            print(e)
    
    
    # redirect query over ssh
    @jit
    def ssh_so_gets(self, query): # queryにクエリの文字列を入れる
        try:
            self.query = query
            print(f'   Query: {query}')
            print('Connecting...')
            data = pd.read_sql(self.query, SO.ssh_config(self.password))
            print('Successfuly!!!')
            print(f'Return Data Rows：{len(data)}×{len(data.columns)}')
            return data
        
        except Exception as e:
            print(e)

            
def main():


    ###############################################################
    #                                                             #
    #        　　　　処理内容をここに記述してください                    #
    #                                                             #
    ###############################################################


    
    #サンプルコード
    sql = SQL()
    print('Query:')
    query = repr(input())
    print(query)
    df = sql.so_gets(query) # 引数にクエリを与える必要があります
    print(df)
        

if __name__ == '__main__':
    main()