在开发中,数据库是必不可少的, 因此这节主要来说一下常用的两种类型数据库,mysql和redis的简单使用
    1. #tornadoredis这款api。
    2. import tornadoredis
    3. from tornado import gen
    4. from tornado.concurrent import Future
    5. pool = None
    6. def init():
    7. global pool
    8. if not pool:
    9. CONNECTION_POOL = tornadoredis.ConnectionPool(max_connections=500, wait_for_available=True)
    10. pool = tornadoredis.Client(connection_pool=CONNECTION_POOL, selected_db=12)
    11. @gen.coroutine
    12. if pool:
    13. @gen.coroutine
    14. def batch(commands):
    15. assert pool is not None
    16. result = None
    17. try:
    18. pipe = pool.pipeline()
    19. for _cmd in commands:
    20. _op = _cmd[0]
    21. _args = _cmd[1]
    22. if len(_cmd) > 2:
    23. _kwargs = _cmd[2]
    24. else:
    25. _kwargs = {}
    26. getattr(pipe, _op)(*args, **kwargs)
    27. result = yield gen.Task(pipe.execute)
    28. except Exception as e:
    29. print e
    30. raise Return(result)
    31. def execute(cmd, *args, **kwargs):
    32. assert pool is not None
    33. f = Future()
    34. def onResult(result):
    35. f.set_result(result)
    36. result = None
    37. _func = getattr(pool, cmd)
    38. _func(callback=onResult, *args, **kwargs)
    39. return f
    40. #对redis的操作进行了统一封装,直接使用execute就可以, 将命令作为参数传递。多个命令的执行可以使用batch来执行, 使用pipe提高执行效率。