File size: 1,665 Bytes
b574d69
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
744d412
b574d69
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
import os
import logging
import pandas as pd

# Set up logging
logging.basicConfig(
    level=logging.INFO, format="%(asctime)s - %(name)s - %(levelname)s - %(message)s"
)

USERNAME = os.environ.get('USERNAME')
PASSWORD = os.environ.get('PASSWORD')
HOST = os.environ.get('HOST')
PORT = os.environ.get('PORT')
DATABASE_NAME = os.environ.get('DATABASE_NAME')

URL = f"mysql+pymysql://{USERNAME}:{PASSWORD}@{HOST}:{PORT}/{DATABASE_NAME}"

# Read data from the database
logging.info('Reading data from NSE Bhav Copy')
nse_df = pd.read_sql_table('nse_bhav_copy', URL, parse_dates=['DATE'])
logging.info('Reading data from BSE Bhav Copy')
bse_df = pd.read_sql_table('bse_bhav_copy', URL, parse_dates=['DATE'])
logging.info('Reading data from Adj NSE Bhav Copy')
adj_nse_df = pd.read_sql_table('adj_nse_bhav_copy', URL, parse_dates=['DATE'])
logging.info('Reading data from Adj BSE Bhav Copy')
adj_bse_df = pd.read_sql_table('adj_bse_bhav_copy', URL, parse_dates=['DATE'])


def get_stock_data(name, start, end):
    """
    Get stock data from the database
    name: str - name of the stock
    start: str - start date for the stock data
    end: str - end date for the stock data
    """
    is_nse = name.endswith('.NS')
    if is_nse:
        name = name[:-3]
        
    adj_df = adj_nse_df if is_nse else adj_bse_df
    df = nse_df if is_nse else bse_df

    df = adj_df if name in adj_df['SYMBOL'].values else df

    df = df.query('SYMBOL == @name')

    if start and end:
        df = df.loc[(df['DATE'] >= start) & (df['DATE'] <= end)]
    elif start:
        df = df.loc[df['DATE'] >= start]
    elif end:
        df = df.loc[df['DATE'] <= end]

    return df