diff options
Diffstat (limited to 'python/dawn_utils.py')
| -rw-r--r-- | python/dawn_utils.py | 28 |
1 files changed, 14 insertions, 14 deletions
diff --git a/python/dawn_utils.py b/python/dawn_utils.py index cd7396e1..1c49d591 100644 --- a/python/dawn_utils.py +++ b/python/dawn_utils.py @@ -2,14 +2,15 @@ from sqlalchemy.sql import text from sqlalchemy import create_engine import os -def create_trigger_function(conn): - auto_dealid = text(""" +def create_trigger_function(db): + # need to escape % with %% + auto_dealid = db.DDL(""" CREATE OR REPLACE FUNCTION auto_dealid() RETURNS TRIGGER AS $$ DECLARE stub text; sqlstr text; BEGIN - sqlstr:= 'UPDATE '|| TG_TABLE_NAME ||' SET %s WHERE id = %L AND dealid is NULL'; + sqlstr:= 'UPDATE '|| TG_TABLE_NAME ||' SET %%s WHERE id = %%L AND dealid is NULL'; IF (TG_TABLE_NAME = 'bonds') THEN stub := 'SC_'; @@ -24,33 +25,32 @@ identifier = COALESCE(identifier, cusip, isin)', NEW.id); ELSIF (TG_TABLE_NAME = 'swaptions') THEN stub := 'SWPTN'; sqlstr := format(sqlstr, 'dealid = $1||id', NEW.id); + ELSIF (TG_TABLE_NAME = 'futures') THEN + stub := 'SCFUT'; + sqlstr := format(sqlstr, 'dealid = $1||id', NEW.id); END IF; EXECUTE sqlstr USING stub; RETURN NEW; END; $$ language plpgsql""") - conn.execute(auto_dealid) + db.event.listen(db.metadata, 'before_create', auto_dealid) -def create_triggers(): +def create_triggers(db): trigger = db.DDL("""CREATE TRIGGER dealid AFTER INSERT ON %(fullname)s FOR EACH ROW EXECUTE PROCEDURE auto_dealid()""") for name, tb in db.metadata.tables.items(): - db.event.listen(tb, 'after_create', trigger) + if not name.endswith('counterparties'): + db.event.listen(tb, 'after_create', trigger) if __name__ == "__main__": """ This script will create the tables and triggers for the Dawn app. If schema is not None, it will create it under a specific schema""" - engine = create_engine('postgresql://qa@debian/dawndb') - conn = engine.connect() - schema = 'qa' #conn.execute("CREATE SCHEMA IF NOT EXISTS {}".format(schema)) - conn.execute("SET search_path TO %s", (schema,)) - create_trigger_function(conn) - conn.close() - + #conn.execute("SET search_path TO %s", (schema,)) os.environ['CONF'] = 'config.ini' from Dawn import db - create_triggers() + create_trigger_function(db) + create_triggers(db) db.create_all() |
