Completed
Push — verbose-log ( bcf960 )
by Valentin
01:50
created

ppp_core.get_engine()   A

Complexity

Conditions 1

Size

Total Lines 5

Duplication

Lines 0
Ratio 0 %

Code Coverage

Tests 0
CRAP Score 2
Metric Value
cc 1
dl 0
loc 5
ccs 0
cts 4
cp 0
crap 2
rs 9.4285
1
"""Store whole answers to a database, for profiling purposes."""
2
3 1
import json
4
5 1
from sqlalchemy import create_engine
6
from sqlalchemy import Table, Column
7
from sqlalchemy import Boolean, Float, Integer, String, Text, DateTime
8
from sqlalchemy import MetaData, ForeignKey
9
10
metadata = MetaData()
11
12
requests = Table('requests', metadata,
13
                 Column('request_handling_start_time', Float),
14
                 Column('request_handling_end_time', Float),
15
                 Column('request_answers_json', Text),
16
                )
17
18
def get_engine(uri):
19
    """Asks SQLAlchemy to create an engine to connect to the URI and return it."""
20
    engine = create_engine(uri)
21
    metadata.create_all(engine)
22
    return engine
23
24
def log_answers(config, answers, start_time, end_time):
25
    url = config.verbose_log_url
26
    if not url:
27
        return
28
    conn = get_engine(url).connect()
29
    answers = json.dumps([x.as_dict() for x in answers])
30
    ins = requests.insert().values(
31
            request_handling_start_time=start_time,
32
            request_handling_end_time=end_time,
33
            request_answers_json=answers)
34
    res = conn.execute(ins)
35