1
1
import pandas as pd
2
2
import peewee
3
3
from .models import RunInfo , Source , RunType
4
- from .database import factdata_db , connect_database
4
+ from .. credentials import create_factdb_engine
5
5
6
6
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 = (
11
9
RunInfo
12
10
.select (
13
11
peewee .fn .SUM (RunInfo .fontime ).alias ('ontime' ),
@@ -18,17 +16,15 @@ def get_ontime_by_source_and_runtype(config=None):
18
16
.switch (RunInfo )
19
17
.join (RunType , on = RunType .fruntypekey == RunInfo .fruntypekey )
20
18
.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 )
24
22
df .set_index (['source' , 'runtype' ], inplace = True )
25
23
26
24
return df
27
25
28
26
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 ):
32
28
query = (
33
29
RunInfo
34
30
.select (
@@ -42,13 +38,8 @@ def get_ontime_by_source(runtype=None, config=None):
42
38
if runtype is not None :
43
39
query = query .where (RunType .fruntypename == runtype )
44
40
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 )
52
43
df .set_index ('source' , inplace = True )
53
44
54
45
return df
0 commit comments