Browse Source

[aiohttp] - use fetchmany api (#9865)

Sergey Kovalev 3 months ago
parent
commit
d5c87a44e5
1 changed files with 6 additions and 10 deletions
  1. 6 10
      frameworks/Python/aiohttp/app/views.py

+ 6 - 10
frameworks/Python/aiohttp/app/views.py

@@ -92,15 +92,11 @@ async def multiple_database_queries_raw(request):
     """
     """
     num_queries = get_num_queries(request)
     num_queries = get_num_queries(request)
 
 
-    ids = [randint(1, 10000) for _ in range(num_queries)]
+    ids = [(randint(1, 10000), ) for _ in range(num_queries)]
 
 
-    result = []
     async with request.app['pg'].acquire() as conn:
     async with request.app['pg'].acquire() as conn:
-        for id_ in ids:
-            result.append({
-                'id': id_,
-                'randomNumber': await conn.fetchval(READ_ROW_SQL, id_),
-            })
+        rows = await conn.fetchmany(READ_ROW_SQL, ids)
+        result = [{'id': id_[0], 'randomNumber': row[0]} for id_, row in zip(ids, rows)]
     return json_response(result)
     return json_response(result)
 
 
 
 
@@ -155,13 +151,13 @@ async def updates_raw(request):
     num_queries = get_num_queries(request)
     num_queries = get_num_queries(request)
     update_ids = sample(range(1, 10001), num_queries)
     update_ids = sample(range(1, 10001), num_queries)
     update_ids.sort()
     update_ids.sort()
+    fetch_params = tuple((i, ) for i in update_ids)
     updates = tuple(zip(update_ids, sample(range(1, 10001), num_queries)))
     updates = tuple(zip(update_ids, sample(range(1, 10001), num_queries)))
     worlds = [{'id': row_id, 'randomNumber': number} for row_id, number in updates]
     worlds = [{'id': row_id, 'randomNumber': number} for row_id, number in updates]
 
 
     async with request.app['pg'].acquire() as conn:
     async with request.app['pg'].acquire() as conn:
-        for id_, _ in updates:
-            # the result of this is the int previous random number which we don't actually use
-            await conn.fetchval(READ_ROW_SQL, id_)
+        # the result of this is the int previous random number which we don't actually use
+        await conn.executemany(READ_ROW_SQL, fetch_params)
         await conn.executemany(WRITE_ROW_SQL, updates)
         await conn.executemany(WRITE_ROW_SQL, updates)
 
 
     return json_response(worlds)
     return json_response(worlds)