async def test_delete(self): await execute("delete from test where grade >= 3") await execute("DELETE FROM test WHERE id>='000010'") await execute("""INSERT INTO `test` ( `id`, `age`, `birth_place`, `grade` ) VALUES ( '000010', 20, 'someplace', 3 ), ( '000011', 20, 'someplace', 3 ), ( '000012', 20, 'someplace', 4 ), ( '000013', 20, 'someplace', 3 ), ( '000014', 20, 'someplace', 4 ), ( '000015', 20, 'someplace', 3 ), ( '000016', 20, 'someplace', 5 ), ( '000017', 20, 'someplace', 3 )""") r = await Test.flex_filter(Test.grade >= 3).aggregate(num=Count('*')) r8 = r['num'] rdelete5 = await Test.filter(grade=3).delete() r = await Test.flex_filter(Test.grade >= 3).aggregate(num=Count('*')) r3 = r['num'] rdelete3 = await Test.flex_filter(Test.grade > 3).delete() r = await Test.flex_filter(Test.grade >= 3).aggregate(num=Count('*')) r0 = r['num'] self.assertEqual(r8, 8) self.assertEqual(rdelete5, 5) self.assertEqual(r3, 3) self.assertEqual(rdelete3, 3) self.assertEqual(r0, 0)
async def test_change(self): Test.change_db('test2') r1 = await Test.aggregate(num=Count('*')) r2 = await Test.aggregate(num=Count('*')) self.assertEqual(r1['num'], 1) self.assertEqual(r2['num'], 1) Test.change_db('test')
async def run(): rs = await Test.filter(grade=3).aggregate(Max('age'), minage=Min('age'), avgage=Avg('age'), groupnum=Count(), group_by='birth_place') import pprint pprint.pprint(rs)
async def test_group_by(self): rs = await select('select grade,count(age),max(age) from test group by grade') rso = await Test.aggregate(Count('age'), maxage=Max('age'), group_by='grade') for r in rs: group_key = r['grade'] r.pop('grade') ormres = rso[group_key] self.assertEqual(r['count(age)'], ormres['COUNT__age']) self.assertEqual(r['max(age)'], ormres['maxage'])
async def test_aggregate(self): rs = await select('select count(age),max(age) from test') rso = await Test.aggregate(Count('age'), maxage=Max('age')) self.assertEqual(rs[0]['count(age)'], rso['COUNT__age']) self.assertEqual(rs[0]['max(age)'], rso['maxage'])
async def test_change_one_time(self): r0 = await Test.aggregate(num=Count('*')) r1 = await Test.change_db_one_time('test2').aggregate(num=Count('*')) r2 = await Test.aggregate(num=Count('*')) self.assertEqual(r1['num'], 1) self.assertEqual(r2['num'], r0['num'])