def optimized_count(self, **kwargs): """Return count in optimized manner Apple.objects.filter(indice=4).count() Apple.objects.optimized_count(indice=4) """ if (len(kwargs) == 0): raise MissingKwargs("you must specify the filter clause") if (len(kwargs) > 1): raise TooManyKwargs() # do not care about more than one kwarg (key, value) = kwargs.items()[0] (nbe, column, qfilter) = tool.parse_kwarg(key) agg = 'agg_count' agf = agg.split('_') agt = util.AggTrigger(util.PG_BACKEND, self.model._meta.db_table, column) if nbe == 1: agf = agg elif nbe == 2: agf = agt.agg_function(agg, agf[1]) cursor = connection.cursor() qry = """SELECT {} FROM {} WHERE {} %s""" tbname = util.table_name(self.model._meta.db_table, column) cursor.execute(qry.format(agf, tbname, qfilter), [value]) row = cursor.fetchone() return row[0]
def test_agg_functions_name(self): agg = util.AggTrigger(PGBACKEND, 'book', 'nbpage', ['count']) res = agg.functions_name self.assertTrue(res, [ 'book_nbpage_insert()', 'book_nbpage_update()', 'book_nbpage_delete()' ])
def test_sql_create_table_twoagg(self): """Test with two aggregats """ agg = util.AggTrigger(PGBACKEND, 'book', 'nbpage', ['count', 'min']) res = agg.sql_create_table() self.assertTrue(isinstance(res, six.string_types)) self.assertTrue(len(res) > 3)
def test_sql_create_triggers(self): agg = util.AggTrigger(PGBACKEND, 'foota', 'foocol', ['agg']) res = agg.sql_create_triggers() self.assertEqual(len(res), 3) self.assertTrue(isinstance(res, list)) tgnames = [tgn[0] for tgn in res] sqls = [tgn[1] for tgn in res] self.assertIn("foota_foocol_insert_trigger", tgnames) self.assertEqual(sqls[0][:6], "CREATE")
def test_functions_are_present(self): agg = util.AggTrigger(PGBACKEND, 'book', 'nbpage', ['count']) dbcommands.execute_raw = MagicMock(return_value=0) res = agg.functions_are_present() funcs = [fun[0] for fun in res] self.assertEqual(len(res), 3) self.assertEqual(funcs, [ 'book_nbpage_insert()', 'book_nbpage_update()', 'book_nbpage_delete()' ])
def test_sql_drop_triggers(self): agg = util.AggTrigger(PGBACKEND, 'foota', 'foocol', ['agg']) res = agg.sql_drop_triggers() self.assertTrue(isinstance(res, list)) self.assertEqual(len(res), 3)
def test_agg_table_name(self): agg = util.AggTrigger(PGBACKEND, 'foota', 'foocol', ['agg']) self.assertTrue(agg.table_name, 'foota_foocol_agg')
def setUp(self): self.agg = util.AggTrigger(PGBACKEND, 'foota', 'foocol', ['agg'])
def test_agg_sql_init(self): agg = util.AggTrigger(PGBACKEND, 'book', 'nbpage', ['count']) res = agg.sql_init() self.assertTrue(isinstance(res, six.string_types))
def test_agg_create_objects(self): agg = util.AggTrigger(PGBACKEND, 'book', 'nbpage', ['count']) dbcommands.execute_raw = MagicMock(return_value=0) res = agg.create_objects() self.assertEqual(res, 0)