11import pandas as pd
22import peewee
33from .models import RunInfo , Source , RunType
4- from .database import factdata_db , connect_database
4+ from .. credentials import create_factdb_engine
55
66
7- def get_ontime_by_source_and_runtype (config = None ):
8- if factdata_db .is_closed ():
9- connect_database (config = config )
10- df = pd .DataFrame (list (
7+ def get_ontime_by_source_and_runtype (engine = None ):
8+ query , params = (
119 RunInfo
1210 .select (
1311 peewee .fn .SUM (RunInfo .fontime ).alias ('ontime' ),
@@ -18,17 +16,15 @@ def get_ontime_by_source_and_runtype(config=None):
1816 .switch (RunInfo )
1917 .join (RunType , on = RunType .fruntypekey == RunInfo .fruntypekey )
2018 .group_by (Source .fsourcename , RunType .fruntypename )
21- .dicts ()
22- . naive () # put selected foreign key attributes directly into the objects
23- ) )
19+ .sql ()
20+ )
21+ df = pd . read_sql ( query , engine or create_factdb_engine (), params = params )
2422 df .set_index (['source' , 'runtype' ], inplace = True )
2523
2624 return df
2725
2826
29- def get_ontime_by_source (runtype = None , config = None ):
30- if factdata_db .is_closed ():
31- connect_database (config = config )
27+ def get_ontime_by_source (runtype = None , engine = None ):
3228 query = (
3329 RunInfo
3430 .select (
@@ -42,13 +38,8 @@ def get_ontime_by_source(runtype=None, config=None):
4238 if runtype is not None :
4339 query = query .where (RunType .fruntypename == runtype )
4440
45- query = (
46- query
47- .group_by (Source .fsourcename )
48- .dicts ()
49- .naive () # put selected foreign key attributes directly into the objects
50- )
51- df = pd .DataFrame (list (query ))
41+ query , params = query .group_by (Source .fsourcename ).sql ()
42+ df = pd .read_sql (query , engine or create_factdb_engine (), params = params )
5243 df .set_index ('source' , inplace = True )
5344
5445 return df
0 commit comments