asyncDB.py 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. """
  2. @author: luojunhui
  3. """
  4. import aiomysql
  5. from applications import log
  6. from config import env
  7. class AsyncMySQLClient(object):
  8. """
  9. Async MySQL
  10. """
  11. def __init__(self, app):
  12. self.app = app
  13. async def initPool(self):
  14. """
  15. 初始化连接
  16. :return:
  17. """
  18. if env == "prod":
  19. self.app.mysql_pool = await aiomysql.create_pool(
  20. host='rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com',
  21. port=3306,
  22. user='crawler',
  23. password='crawler123456@',
  24. db='piaoquan-crawler',
  25. charset='utf8mb4',
  26. maxsize=100,
  27. connect_timeout=120,
  28. )
  29. log(
  30. code="1001",
  31. env=env,
  32. message="数据库初始化成功"
  33. )
  34. elif env == "dev":
  35. self.app.mysql_pool = await aiomysql.create_pool(
  36. host='rm-bp1159bu17li9hi94.mysql.rds.aliyuncs.com',
  37. port=3306,
  38. user='crawler',
  39. password='crawler123456@',
  40. db='piaoquan-crawler',
  41. charset='utf8mb4',
  42. maxsize=100,
  43. connect_timeout=120,
  44. )
  45. log(
  46. code="1001",
  47. env=env,
  48. message="数据库初始化成功"
  49. )
  50. else:
  51. log(
  52. code="1001",
  53. env=env,
  54. message="数据库初始化失败,环境校验失败"
  55. )
  56. return None
  57. async def closePool(self):
  58. """
  59. 关闭 mysql 连接
  60. :return:
  61. """
  62. self.app.mysql_pool.close()
  63. await self.app.mysql_pool.wait_closed()
  64. async def asyncSelect(self, sql):
  65. """
  66. select method
  67. :param sql:
  68. :return:
  69. """
  70. async with self.app.mysql_pool.acquire() as conn:
  71. async with conn.cursor() as cursor:
  72. await cursor.execute(sql)
  73. result = await cursor.fetchall()
  74. return result
  75. async def asyncInsert(self, sql, params):
  76. """
  77. insert and update method
  78. :param params:
  79. :param sql:
  80. :return:
  81. """
  82. async with self.app.mysql_pool.acquire() as coon:
  83. async with coon.cursor() as cursor:
  84. await cursor.execute(sql, params)
  85. await coon.commit()