|
@@ -8,7 +8,7 @@ import ujson
|
|
|
|
|
|
from sqlalchemy import select
|
|
from sqlalchemy import select
|
|
|
|
|
|
-from .models import sa_fortunes, sa_worlds, Fortune
|
|
|
|
|
|
+from .models import sa_fortunes, sa_worlds, Fortune, World
|
|
|
|
|
|
json_response = partial(json_response, dumps=ujson.dumps)
|
|
json_response = partial(json_response, dumps=ujson.dumps)
|
|
|
|
|
|
@@ -37,10 +37,11 @@ async def single_database_query_orm(request):
|
|
Test 2 ORM
|
|
Test 2 ORM
|
|
"""
|
|
"""
|
|
id_ = randint(1, 10000)
|
|
id_ = randint(1, 10000)
|
|
- async with request.app['pg'].acquire() as conn:
|
|
|
|
- cur = await conn.execute(select([sa_worlds.c.randomnumber]).where(sa_worlds.c.id == id_))
|
|
|
|
- r = await cur.first()
|
|
|
|
- return json_response({'id': id_, 'randomNumber': r[0]})
|
|
|
|
|
|
+ async with request.app['db_session']() as sess:
|
|
|
|
+ # TODO(SA1.4.0b2): sess.scalar()
|
|
|
|
+ ret = await sess.execute(select(World.randomnumber).filter_by(id=id_))
|
|
|
|
+ num = ret.scalar()
|
|
|
|
+ return json_response({'id': id_, 'randomNumber': num})
|
|
|
|
|
|
|
|
|
|
async def single_database_query_raw(request):
|
|
async def single_database_query_raw(request):
|
|
@@ -64,11 +65,12 @@ async def multiple_database_queries_orm(request):
|
|
ids.sort()
|
|
ids.sort()
|
|
|
|
|
|
result = []
|
|
result = []
|
|
- async with request.app['pg'].acquire() as conn:
|
|
|
|
|
|
+ async with request.app['db_session']() as sess:
|
|
for id_ in ids:
|
|
for id_ in ids:
|
|
- cur = await conn.execute(select([sa_worlds.c.randomnumber]).where(sa_worlds.c.id == id_))
|
|
|
|
- r = await cur.first()
|
|
|
|
- result.append({'id': id_, 'randomNumber': r[0]})
|
|
|
|
|
|
+ # TODO(SA1.4.0b2): sess.scalar()
|
|
|
|
+ ret = await sess.execute(select(World.randomnumber).filter_by(id=id_))
|
|
|
|
+ num = ret.scalar()
|
|
|
|
+ result.append({'id': id_, 'randomNumber': num})
|
|
return json_response(result)
|
|
return json_response(result)
|
|
|
|
|
|
|
|
|
|
@@ -97,9 +99,9 @@ async def fortunes(request):
|
|
"""
|
|
"""
|
|
Test 4 ORM
|
|
Test 4 ORM
|
|
"""
|
|
"""
|
|
- async with request.app['pg'].acquire() as conn:
|
|
|
|
- cur = await conn.execute(select([sa_fortunes.c.id, sa_fortunes.c.message]))
|
|
|
|
- fortunes = list(await cur.fetchall())
|
|
|
|
|
|
+ async with request.app['db_session']() as sess:
|
|
|
|
+ ret = await sess.execute(select(Fortune.id, Fortune.message))
|
|
|
|
+ fortunes = ret.all()
|
|
fortunes.append(Fortune(id=0, message='Additional fortune added at request time.'))
|
|
fortunes.append(Fortune(id=0, message='Additional fortune added at request time.'))
|
|
fortunes.sort(key=attrgetter('message'))
|
|
fortunes.sort(key=attrgetter('message'))
|
|
return {'fortunes': fortunes}
|
|
return {'fortunes': fortunes}
|
|
@@ -127,21 +129,17 @@ async def updates(request):
|
|
ids = [randint(1, 10000) for _ in range(num_queries)]
|
|
ids = [randint(1, 10000) for _ in range(num_queries)]
|
|
ids.sort()
|
|
ids.sort()
|
|
|
|
|
|
- async with request.app['pg'].acquire() as conn:
|
|
|
|
- for id_ in ids:
|
|
|
|
- cur = await conn.execute(
|
|
|
|
- select([sa_worlds.c.randomnumber])
|
|
|
|
- .where(sa_worlds.c.id == id_)
|
|
|
|
- )
|
|
|
|
- # the result of this is a dict with the previous random number `randomnumber` which we don't actually use
|
|
|
|
- await cur.first()
|
|
|
|
- rand_new = randint(1, 10000)
|
|
|
|
- await conn.execute(
|
|
|
|
- sa_worlds.update()
|
|
|
|
- .where(sa_worlds.c.id == id_)
|
|
|
|
- .values(randomnumber=rand_new)
|
|
|
|
- )
|
|
|
|
- result.append({'id': id_, 'randomNumber': rand_new})
|
|
|
|
|
|
+ # TODO(SA1.4.0b2): async with request.app['db_session'].begin() as sess:
|
|
|
|
+ async with request.app['db_session']() as sess:
|
|
|
|
+ async with sess.begin():
|
|
|
|
+ for id_ in ids:
|
|
|
|
+ rand_new = randint(1, 10000)
|
|
|
|
+ # TODO(SA1.4.0b2): world = await sess.get(World, id_)
|
|
|
|
+ ret = await sess.execute(select(World).filter_by(id=id_))
|
|
|
|
+ world = ret.scalar()
|
|
|
|
+ world.randomnumber = rand_new
|
|
|
|
+
|
|
|
|
+ result.append({'id': id_, 'randomNumber': rand_new})
|
|
return json_response(result)
|
|
return json_response(result)
|
|
|
|
|
|
async def updates_raw(request):
|
|
async def updates_raw(request):
|