Skip to content

Commit 3dd6da0

Browse files
committed
#1406 - fix all warehouse connections
Derive PostgreSQL connect string for data warehouse DB from Django connections, then create a single engine for all queries that will use that DB.
1 parent 692b9e8 commit 3dd6da0

File tree

1 file changed

+13
-8
lines changed

1 file changed

+13
-8
lines changed

dashboard/cron.py

Lines changed: 13 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,11 @@
3838
host=db_host,
3939
port=db_port))
4040

41+
data_warehouse_engine = create_engine(
42+
'postgresql://{user}:{password}@{host}:{port}/{database}'
43+
.format(**(conns['DATA_WAREHOUSE'].get_connection_params())))
44+
45+
4146
# Set up queries array from configuration file
4247
CRON_QUERY_FILE = settings.CRON_QUERY_FILE
4348
logger.info(CRON_QUERY_FILE)
@@ -59,7 +64,7 @@ def split_list(a_list: list, size: int = 20):
5964

6065

6166
def util_function(data_warehouse_course_id, sql_string, mysql_table, table_identifier=None, param_object=None):
62-
df = pd.read_sql(sql_string, conns['DATA_WAREHOUSE'], params=param_object)
67+
df = pd.read_sql(sql_string, data_warehouse_engine, params=param_object)
6368
logger.debug(df)
6469

6570
# Sql returns boolean value so grouping course info along with it so that this could be stored in the DB table.
@@ -134,7 +139,8 @@ def __init__(self) -> None:
134139
super().__init__()
135140
self.valid_locked_course_ids: List[int]
136141

137-
# verify whether course ids are valid
142+
143+
# verify whether course ids are valid
138144
def verify_course_ids(self):
139145
# whether all course ids are valid ids
140146
invalid_course_id_list = []
@@ -149,10 +155,7 @@ def verify_course_ids(self):
149155
course_sql = queries['course'].format(course_id=course_id)
150156
logger.debug(course_sql)
151157

152-
connect_string = \
153-
'postgresql://{user}:{password}@{host}:{port}/{database}' \
154-
.format(**(conns['DATA_WAREHOUSE'].get_connection_params()))
155-
course_df = pd.read_sql(course_sql, connect_string)
158+
course_df = pd.read_sql(course_sql, data_warehouse_engine)
156159
logger.debug(course_df)
157160

158161
# error out when course id is invalid, otherwise add DataFrame to list
@@ -230,7 +233,8 @@ def update_canvas_resource(self):
230233
course_ids = list(map(str, self.valid_locked_course_ids))
231234
file_sql = queries['resource']
232235
logger.debug(file_sql)
233-
df_attach = pd.read_sql(file_sql, conns['DATA_WAREHOUSE'], params={'course_ids': tuple(course_ids)})
236+
df_attach = pd.read_sql(file_sql, data_warehouse_engine,
237+
params={'course_ids': tuple(course_ids)})
234238
logger.debug(df_attach)
235239
# Update these back again based on the dataframe
236240
# Remove any rows where file_state is not available!
@@ -553,7 +557,8 @@ def update_term(self) -> str:
553557

554558
term_sql: str = queries['term']
555559
logger.debug(term_sql)
556-
warehouse_term_df: pd.DataFrame = pd.read_sql(term_sql, conns['DATA_WAREHOUSE'])
560+
warehouse_term_df: pd.DataFrame = pd.read_sql(term_sql,
561+
data_warehouse_engine)
557562

558563
existing_terms_ids: List[int] = [term.id for term in list(AcademicTerms.objects.all())]
559564
new_term_ids: List[int] = [int(id) for id in warehouse_term_df['id'].to_list() if id not in existing_terms_ids]

0 commit comments

Comments
 (0)