diff options
Diffstat (limited to 'python')
| -rw-r--r-- | python/quote_parsing/parse_emails.py | 25 |
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() |
