db_connecter.py 2.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. import pymysql
  2. import configparser
  3. from dbutils.pooled_db import PooledDB
  4. class UseDatabase:
  5. # 连接池对象
  6. __pool = None
  7. def __init__(self):
  8. config = configparser.ConfigParser()
  9. config.read("database.conf", encoding="utf-8")
  10. self.pool = UseDatabase.__get_conn(config)
  11. @staticmethod
  12. def __get_conn(config):
  13. """
  14. @summary: 静态方法,从连接池中取出连接
  15. @return MySQLdb.connection
  16. """
  17. db_host = config.get("db", "db_host")
  18. db_user = config.get("db", "db_user")
  19. db_pass = config.get("db", "db_pass")
  20. db_name = config.get("db", "db_name")
  21. if UseDatabase.__pool is None:
  22. __pool = PooledDB(pymysql, mincached=1, maxcached=10, maxconnections=10,
  23. host=db_host, port=3306, user=db_user, passwd=db_pass,
  24. db=db_name, use_unicode=True, blocking=False, charset="utf8")
  25. return __pool
  26. def get_all(self, sql):
  27. try:
  28. con = self.pool.connection()
  29. # cur = con.cursor(cursor=pymysql.cursors.DictCursor)
  30. cur = con.cursor()
  31. count = cur.execute(sql)
  32. if count > 0:
  33. result = cur.fetchall()
  34. else:
  35. result = False
  36. return result
  37. except Exception as err:
  38. raise type(err)(err)
  39. finally:
  40. cur.close()
  41. con.close()
  42. def get_all_dict(self, sql):
  43. try:
  44. con = self.pool.connection()
  45. cur = con.cursor(cursor=pymysql.cursors.DictCursor)
  46. count = cur.execute(sql)
  47. if count > 0:
  48. result = cur.fetchall()
  49. else:
  50. result = False
  51. return result
  52. except Exception as err:
  53. raise type(err)(err)
  54. finally:
  55. cur.close()
  56. con.close()
  57. def update(self, sql, val):
  58. try:
  59. con = self.pool.connection()
  60. cur = con.cursor()
  61. cur.execute(sql, val)
  62. con.commit()
  63. except Exception as err:
  64. con.rollback() # 事务回滚
  65. raise type(err)(err)
  66. finally:
  67. cur.close()
  68. con.close()
  69. if __name__ == '__main__':
  70. conn = UseDatabase()
  71. sql = "show databases;"
  72. results = conn.get_all(sql)
  73. print(results)