From 8e972128eb90105dfd4cdabda5b0bb2c2e3519e4 Mon Sep 17 00:00:00 2001 From: Javier Goizueta Date: Wed, 9 Mar 2016 15:00:50 +0100 Subject: [PATCH] Modify sql code to user the python virtualenv --- src/pg/sql/01_py.sql | 18 ++++++++++++++++++ ...01_random_seeds.sql => 02_random_seeds.sql} | 1 + src/pg/sql/{02_moran.sql => 10_moran.sql} | 2 ++ .../{03_overlap_sum.sql => 20_overlap_sum.sql} | 0 .../{04_dot_density.sql => 30_dot_density.sql} | 0 5 files changed, 21 insertions(+) create mode 100644 src/pg/sql/01_py.sql rename src/pg/sql/{01_random_seeds.sql => 02_random_seeds.sql} (80%) rename src/pg/sql/{02_moran.sql => 10_moran.sql} (89%) rename src/pg/sql/{03_overlap_sum.sql => 20_overlap_sum.sql} (100%) rename src/pg/sql/{04_dot_density.sql => 30_dot_density.sql} (100%) diff --git a/src/pg/sql/01_py.sql b/src/pg/sql/01_py.sql new file mode 100644 index 0000000..f1eaa31 --- /dev/null +++ b/src/pg/sql/01_py.sql @@ -0,0 +1,18 @@ +-- Use the crankshaft python module +CREATE OR REPLACE FUNCTION _cdb_crankshaft_activate_py() +RETURNS VOID +AS $$ + # activate virtualenv + # TODO: parameterize with environment variables or something + venv_path = '/home/ubuntu/crankshaft/src/py/dev' + activate_path = venv_path + '/bin/activate_this.py' + exec(open(activate_path).read(), + dict(__file__=activate_path)) + + # import something from virtualenv + # from crankshaft import random_seeds + + # do some stuff + # random_seeds.set_random_seeds(123) + # plpy.notice('here we are') +$$ LANGUAGE plpythonu; diff --git a/src/pg/sql/01_random_seeds.sql b/src/pg/sql/02_random_seeds.sql similarity index 80% rename from src/pg/sql/01_random_seeds.sql rename to src/pg/sql/02_random_seeds.sql index 2b62be3..9a0cca6 100644 --- a/src/pg/sql/01_random_seeds.sql +++ b/src/pg/sql/02_random_seeds.sql @@ -4,6 +4,7 @@ CREATE OR REPLACE FUNCTION _cdb_random_seeds (seed_value INTEGER) RETURNS VOID AS $$ + plpy.execute('SELECT cdb_crankshaft._cdb_crankshaft_activate_py()') from crankshaft import random_seeds random_seeds.set_random_seeds(seed_value) $$ LANGUAGE plpythonu; diff --git a/src/pg/sql/02_moran.sql b/src/pg/sql/10_moran.sql similarity index 89% rename from src/pg/sql/02_moran.sql rename to src/pg/sql/10_moran.sql index d061b45..49c70c2 100644 --- a/src/pg/sql/02_moran.sql +++ b/src/pg/sql/10_moran.sql @@ -11,6 +11,7 @@ CREATE OR REPLACE FUNCTION w_type TEXT DEFAULT 'knn') RETURNS TABLE (moran FLOAT, quads TEXT, significance FLOAT, ids INT) AS $$ + plpy.execute('SELECT cdb_crankshaft._cdb_crankshaft_activate_py()') from crankshaft.clustering import moran_local # TODO: use named parameters or a dictionary return moran_local(t, attr, significance, num_ngbrs, permutations, geom_column, id_col, w_type) @@ -29,6 +30,7 @@ CREATE OR REPLACE FUNCTION w_type TEXT DEFAULT 'knn') RETURNS TABLE(moran FLOAT, quads TEXT, significance FLOAT, ids INT, y numeric) AS $$ + plpy.execute('SELECT cdb_crankshaft._cdb_crankshaft_activate_py()') from crankshaft.clustering import moran_local_rate # TODO: use named parameters or a dictionary return moran_local_rate(t, numerator, denominator, significance, num_ngbrs, permutations, geom_column, id_col, w_type) diff --git a/src/pg/sql/03_overlap_sum.sql b/src/pg/sql/20_overlap_sum.sql similarity index 100% rename from src/pg/sql/03_overlap_sum.sql rename to src/pg/sql/20_overlap_sum.sql diff --git a/src/pg/sql/04_dot_density.sql b/src/pg/sql/30_dot_density.sql similarity index 100% rename from src/pg/sql/04_dot_density.sql rename to src/pg/sql/30_dot_density.sql