From 3ed81c0b730c97cad498165b444853015b4146a8 Mon Sep 17 00:00:00 2001 From: Charles Leifer Date: Thu, 27 May 2010 23:17:00 -0500 Subject: [PATCH] Finding issues with the queries in postgresql - this at least gets them running, but the issue needs more investigation --- ratings/tests/settings.py | 2 ++ ratings/utils.py | 11 +++++++---- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/ratings/tests/settings.py b/ratings/tests/settings.py index 297476b..3b04ffb 100644 --- a/ratings/tests/settings.py +++ b/ratings/tests/settings.py @@ -1,4 +1,6 @@ DATABASE_ENGINE = 'sqlite3' +DATABASE_ENGINE = 'postgresql_psycopg2' +DATABASE_NAME = 'test_main' INSTALLED_APPS = [ 'django.contrib.auth', diff --git a/ratings/utils.py b/ratings/utils.py index 806d525..3b321a3 100644 --- a/ratings/utils.py +++ b/ratings/utils.py @@ -35,8 +35,8 @@ def sim_euclidean_distance(ratings_queryset, factor_a, factor_b): %(ratings_table)s AS r1, %(ratings_table)s AS r2 WHERE - r1.%(filter_field)s = "%(lookup_a)s" AND - r2.%(filter_field)s = "%(lookup_b)s" AND + r1.%(filter_field)s = '%(lookup_a)s' AND + r2.%(filter_field)s = '%(lookup_b)s' AND r1.%(match_on)s = r2.%(match_on)s %(queryset_filter)s """ @@ -95,8 +95,8 @@ def sim_pearson_correlation(ratings_queryset, factor_a, factor_b): %(ratings_table)s AS r1, %(ratings_table)s AS r2 WHERE - r1.%(filter_field)s = "%(lookup_a)s" AND - r2.%(filter_field)s = "%(lookup_b)s" AND + r1.%(filter_field)s = '%(lookup_a)s' AND + r2.%(filter_field)s = '%(lookup_b)s' AND r1.%(match_on)s = r2.%(match_on)s %(queryset_filter)s """ @@ -126,6 +126,9 @@ def sim_pearson_correlation(ratings_queryset, factor_a, factor_b): return 0 sum1, sum2, sum1_sq, sum2_sq, psum, sample_size = result + + if sum1 is None or sum2 is None or sample_size == 0: + return 0 num = psum - (sum1 * sum2 / sample_size) den = sqrt((sum1_sq - pow(sum1, 2) / sample_size) * (sum2_sq - pow(sum2, 2) / sample_size))