1
|
|
|
"""Store whole answers to a database, for profiling purposes.""" |
2
|
|
|
|
3
|
1 |
|
import json |
4
|
|
|
|
5
|
1 |
|
from sqlalchemy import create_engine |
6
|
1 |
|
from sqlalchemy import Table, Column |
7
|
1 |
|
from sqlalchemy import Boolean, Float, Integer, String, Text, DateTime |
8
|
1 |
|
from sqlalchemy import MetaData, ForeignKey |
9
|
|
|
|
10
|
1 |
|
metadata = MetaData() |
11
|
|
|
|
12
|
1 |
|
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
|
1 |
|
def get_engine(uri): |
19
|
|
|
"""Asks SQLAlchemy to create an engine to connect to the URI and return it.""" |
20
|
1 |
|
engine = create_engine(uri) |
21
|
1 |
|
metadata.create_all(engine) |
22
|
1 |
|
return engine |
23
|
|
|
|
24
|
1 |
|
def log_answers(config, answers, start_time, end_time): |
25
|
1 |
|
url = config.verbose_log_url |
26
|
1 |
|
if not url: |
27
|
1 |
|
return |
28
|
1 |
|
conn = get_engine(url).connect() |
29
|
1 |
|
answers = json.dumps([x.as_dict() for x in answers]) |
30
|
1 |
|
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
|
|
|
|