def testSetRowFactorySize(self):
try:
from functools import lru_cache
except ImportError: # Python < 3.2
lru_cache = None
queries = ['select 1 as a, 2 as b, 3 as c', 'select 123 as abc']
query = self.c.query
for maxsize in (None, 0, 1, 2, 3, 10, 1024):
pg.set_row_factory_size(maxsize)
for i in range(3):
for q in queries:
r = query(q).namedresult()[0]
if q.endswith('abc'):
self.assertEqual(r, (123,))
self.assertEqual(r._fields, ('abc',))
else:
self.assertEqual(r, (1, 2, 3))
self.assertEqual(r._fields, ('a', 'b', 'c'))
if lru_cache:
info = pg._row_factory.cache_info()
self.assertEqual(info.maxsize, maxsize)
self.assertEqual(info.hits + info.misses, 6)
self.assertEqual(info.hits,
0 if maxsize is not None and maxsize < 2 else 4)
评论列表
文章目录