import os
import pandas as pd
import numpy as np
import pandas.io.data as web
import datetime
import math
import sys

from pandas.io import sql

import MySQLdb
from audioop import avg

from app.processor.DBParameter import *

class StockLoader:
  
    @staticmethod
    def save(ticker, startDate, endDate):
        try:
            stock = web.DataReader(ticker, 'yahoo', start = startDate, end =endDate)
        except Exception as e:
            print 'Error occur while reading stock data from Yahoo: ' + str(e)
            raise

        stock = stock.rename(columns = {'Adj Close':'Adj_Close'})
        stock['Ticker'] = ticker

        DBParameter.runSQLByMySQL("DELETE FROM Stock WHERE ticker='" + ticker + "' AND Date>='" + startDate + "' AND Date<='" + endDate + "'")
        StockLoader.saveToMySQL(stock)

        return len(stock)

    @staticmethod
    def saveToMySQL(stock):
        db = MySQLdb.connect(DBParameter.HOST_NAME, DBParameter.USER_NAME, DBParameter.PASSWORD, DBParameter.DB_NAME)

        #stock.to_sql(name='Stock', con=db, if_exists = 'replace', index=True, flavor='mysql')
        stock.to_sql(name='Stock', con=db, if_exists = 'append', index=True, flavor='mysql')

        db.close()
        
