db_dbutils_init.py 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263
  1. from dbutils.pooled_db import PooledDB
  2. import db_config as config
  3. """
  4. @功能:创建数据库连接池
  5. """
  6. class MyConnectionPool(object):
  7. __pool = None
  8. # def __init__(self):
  9. # self.conn = self.__getConn()
  10. # self.cursor = self.conn.cursor()
  11. # 创建数据库连接conn和游标cursor
  12. def __enter__(self):
  13. self.conn = self.__getconn()
  14. self.cursor = self.conn.cursor()
  15. # 创建数据库连接池
  16. def __getconn(self):
  17. if self.__pool is None:
  18. self.__pool = PooledDB(
  19. creator=config.DB_CREATOR,
  20. mincached=config.DB_MIN_CACHED,
  21. maxcached=config.DB_MAX_CACHED,
  22. maxshared=config.DB_MAX_SHARED,
  23. maxconnections=config.DB_MAX_CONNECYIONS,
  24. blocking=config.DB_BLOCKING,
  25. maxusage=config.DB_MAX_USAGE,
  26. setsession=config.DB_SET_SESSION,
  27. host=config.DB_TEST_HOST,
  28. port=config.DB_TEST_PORT,
  29. user=config.DB_TEST_USER,
  30. passwd=config.DB_TEST_PASSWORD,
  31. db=config.DB_TEST_DBNAME,
  32. use_unicode=False,
  33. charset=config.DB_CHARSET
  34. )
  35. return self.__pool.connection()
  36. # 释放连接池资源
  37. def __exit__(self, exc_type, exc_val, exc_tb):
  38. self.cursor.close()
  39. self.conn.close()
  40. # 关闭连接归还给链接池
  41. # def close(self):
  42. # self.cursor.close()
  43. # self.conn.close()
  44. # 从连接池中取出一个连接
  45. def getconn(self):
  46. conn = self.__getconn()
  47. cursor = conn.cursor()
  48. return cursor, conn
  49. # 获取连接池,实例化
  50. def get_my_connection():
  51. return MyConnectionPool()