from sqlobject import * from sqlobject.sqlbuilder import Select, func from sqlobject.tests.dbtest import * ######################################## ## groupBy ######################################## class GroupbyTest(SQLObject): name = StringCol() value = IntCol() def test_groupBy(): setupClass(GroupbyTest) GroupbyTest(name='a', value=1) GroupbyTest(name='a', value=2) GroupbyTest(name='b', value=1) connection = getConnection() select = Select([GroupbyTest.q.name, func.COUNT(GroupbyTest.q.value)], groupBy=GroupbyTest.q.name, orderBy=GroupbyTest.q.name) sql = connection.sqlrepr(select) rows = connection.queryAll(sql) assert rows == [('a', 2), ('b', 1)] def test_groupBy_list(): setupClass(GroupbyTest) GroupbyTest(name='a', value=1) GroupbyTest(name='a', value=2) GroupbyTest(name='b', value=1) connection = getConnection() select = Select([GroupbyTest.q.name, GroupbyTest.q.value], groupBy=[GroupbyTest.q.name, GroupbyTest.q.value], orderBy=[GroupbyTest.q.name, GroupbyTest.q.value]) sql = connection.sqlrepr(select) rows = connection.queryAll(sql) assert rows == [('a', 1), ('a', 2), ('b', 1)]