Обобщение получения данных с SQL сервера на Python - PullRequest
0 голосов
/ 18 марта 2020

Я изучаю задачу, для которой мне нужно получить данные с сервера SQL, и, поскольку я выполняю анализ временных рядов, мне нужно указать поле даты, которое может изменить каждую таблицу или запрос. Также я могу прочитать простой запрос или хранимую процедуру. Я хочу обобщить мой код ниже, который является полем и спецификацией базы данных c. Я думал, что я могу определить пустой словарь в классе, а затем я могу вызвать его в методе ниже dataread. Но я в конфликте.

class DataPrep:
def __init__(self,conn):
    self.df = pd.DataFrame()
    self.mega_projects = set()
    self.mega_project_to_df = {}
    self.mega_project_to_df_pvt = {}
    self.conn={}

def read_data(self):
    self.conn=pyodbc.connect({'driver':None, 'server':None, 'database':None, 'uid':None, 'pwd':None})

    self.df = pd.read_sql_query('''exec [dbo].[ML_WorkLoad]''', self.conn,  parse_dates={'CreatedDate': '%d/%m/%Y %H.%M.%S'})
    #self.df = self.df[['EstimateManDay', 'CreatedDate', 'MegaProject', 'ProjectName']]
    self.df['month'] = pd.DatetimeIndex(self.df['CreatedDate']).month
    self.df['year'] = pd.DatetimeIndex(self.df['CreatedDate']).year
    self.df['quarter'] = pd.DatetimeIndex(self.df['CreatedDate']).quarter
    self.df['week'] = pd.DatetimeIndex(self.df['CreatedDate']).week
    self.df['dayorg'] = pd.DatetimeIndex(self.df['CreatedDate']).day
    self.df['day'] = 1
    self.df['year_quarter'] = self.df['year'].astype(str) + "_" + self.df[
        'quarter'].astype(str)
    self.df['year_month'] = self.df['year'].astype(str) + "_" + self.df[
        'month'].astype(str)
    self.df['year_week'] = self.df['year'].astype(str) + "_" + self.df['week'].astype(
        str)
    self.df['date'] = pd.to_datetime(self.df[['year', 'month', 'day']])
    self.df = self.df[self.df['CreatedDate'] <= datetime.strptime("2020-01-01", "%Y-%m-%d")]
...