mysql.py 2.2 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758
  1. import asyncio
  2. from random import randint
  3. from operator import itemgetter
  4. @asyncio.coroutine
  5. def get_random_record(container):
  6. with (yield from container.engines['mysql'].result()) as mysql_conn:
  7. cur = yield from mysql_conn.cursor()
  8. yield from cur.execute('SELECT id AS "Id", randomnumber AS "RandomNumber" FROM world WHERE id=%(idx)s LIMIT 1',
  9. {'idx': randint(1, 10000)})
  10. world = yield from cur.fetchone()
  11. return world
  12. @asyncio.coroutine
  13. def get_random_records(container, limit):
  14. results = []
  15. with (yield from container.engines['mysql'].result()) as mysql_conn:
  16. cur = yield from mysql_conn.cursor()
  17. for i in range(limit):
  18. yield from cur.execute('SELECT id AS "Id", randomnumber AS "RandomNumber" FROM world WHERE id=%(idx)s LIMIT 1',
  19. {'idx': randint(1, 10000)})
  20. results.append((yield from cur.fetchone()))
  21. return results
  22. @asyncio.coroutine
  23. def update_random_records(container, limit):
  24. results = []
  25. with (yield from container.engines['mysql'].result()) as mysql_conn:
  26. cur = yield from mysql_conn.cursor()
  27. for i in range(limit):
  28. yield from cur.execute('SELECT id AS "Id", randomnumber AS "RandomNumber" FROM world WHERE id=%(idx)s LIMIT 1',
  29. {'idx': randint(1, 10000)})
  30. world = yield from cur.fetchone()
  31. world['RandomNumber'] = randint(1, 10000)
  32. yield from cur.execute('UPDATE world SET randomnumber=%(random_number)s WHERE id=%(idx)s',
  33. {'random_number': world['RandomNumber'], 'idx': world['Id']})
  34. yield from mysql_conn.commit()
  35. results.append(world)
  36. return results
  37. @asyncio.coroutine
  38. def get_fortunes(container):
  39. with (yield from container.engines['mysql'].result()) as mysql_conn:
  40. cur = yield from mysql_conn.cursor()
  41. yield from cur.execute('SELECT * FROM fortune')
  42. fortunes = yield from cur.fetchall()
  43. fortunes.append({'id': 0, 'message': 'Additional fortune added at request time.'})
  44. fortunes.sort(key=itemgetter('message'))
  45. return fortunes