aboutsummaryrefslogtreecommitdiffstats
path: root/python/quote_parsing/parse_emails.py
diff options
context:
space:
mode:
Diffstat (limited to 'python/quote_parsing/parse_emails.py')
-rw-r--r--python/quote_parsing/parse_emails.py25
1 files changed, 10 insertions, 15 deletions
diff --git a/python/quote_parsing/parse_emails.py b/python/quote_parsing/parse_emails.py
index 47733ff8..09fbecf6 100644
--- a/python/quote_parsing/parse_emails.py
+++ b/python/quote_parsing/parse_emails.py
@@ -6,6 +6,7 @@ import pickle
import traceback
from . import logger
from functools import partial, lru_cache
+from psycopg2.extras import execute_values
from pathlib import Path
from quantlib.time.imm import next_date
from quantlib.time.api import Date, pydate_from_qldate
@@ -778,18 +779,15 @@ def parse_email(email: Path, date_received: datetime.date, conn):
def write_todb(swaption_stack, index_data, conn):
- def gen_sql_str(query, table_name, columns):
- return query.format(
- sql.Identifier(table_name),
- sql.SQL(", ").join(sql.Identifier(c) for c in columns),
- sql.SQL(", ").join(sql.Placeholder() * len(columns)),
- )
+ sql_str = sql.SQL(
+ "INSERT INTO swaption_ref_quotes({}) VALUES({}) "
+ "ON CONFLICT DO NOTHING RETURNING ref_id"
+ ).format(sql.SQL(", ").join(sql.Identifier(c) for c in index_data.columns),
+ sql.SQL(", ").join(sql.Placeholder() * len(index_data.columns)))
- query = sql.SQL(
- "INSERT INTO {}({}) VALUES({}) ON CONFLICT DO NOTHING RETURNING ref_id"
- )
- sql_str = gen_sql_str(query, "swaption_ref_quotes", index_data.columns)
- query = sql.SQL("INSERT INTO {}({}) VALUES({}) ON CONFLICT DO NOTHING")
+ sql_quotes = sql.SQL(
+ "INSERT INTO swaption_quotes({}) VALUES %s ON CONFLICT DO NOTHING"
+ ).format(sql.SQL(", ").join(sql.Identifier(c) for c in swaption_stack.columns))
index_data["expiry"] = pd.to_datetime(index_data.expiry)
with conn.cursor() as c:
for t in index_data.itertuples(index=False):
@@ -819,10 +817,7 @@ def write_todb(swaption_stack, index_data, conn):
except IndexError:
breakpoint()
df["ref_id"] = ref_id
- c.executemany(
- gen_sql_str(query, "swaption_quotes", df.columns),
- df.itertuples(index=False),
- )
+ execute_values(c, sql_quotes, df.itertuples(index=False))
conn.commit()