七 mysql连接池

来源:互联网 发布:网络流行组合字 编辑:程序博客网 时间:2024/06/05 19:32

数据保存到数据库中,当然少不了获取连接及执行sql
使用连接池,获取连接

@classmethod    def getConnection(cls):        '''        @return: 返回一个数据库连接的实例        '''        logger = logging.getLogger('myLogger.myutil.Myutil')        try:            if MyUtil.cnxpool is None:                user = MyUtil.loadProperty('mysql', 'user')                passwd = MyUtil.loadProperty('mysql', 'password')                host = MyUtil.loadProperty('mysql', 'host')                db = MyUtil.loadProperty('mysql', 'database')                dbconfig = {                    "database":db,                    "user":user,                    "password":passwd,                    "host":host,                    "charset":"utf8"                }                MyUtil.cnxpool = mysql.connector.pooling.MySQLConnectionPool(pool_name="mypool",  pool_size=10, **dbconfig)        except mysql.connector.Error as err:            MyUtil.cnxpool = None            if err.errno == errorcode.ER_ACCESS_DENIED_ERROR:                logger.info("用户名或密码不对")            elif err.errno == errorcode.ER_BAD_DB_ERROR:                logger.info("数据库不存在")            else:                logger.debug(err)            raise Exception('Can\'t connect to MySQL server')        return MyUtil.cnxpool.get_connection()

执行sql

def store2DB(self, sql, values):        '''        保存需求到表中        @param sql: 需要执行的sql        @param values: 元组类型,字段的值        @return: 执行结果, True or False        '''                # get connection        cnx = MyUtil.getConnection()        # get cursor        cursor = cnx.cursor()        try:            # execute sql            cursor.execute(sql, values)            res = True            self.logger.info('add view  success')        except Exception, e:            self.logger.debug(e)            res = False        else:            # commit            cnx.commit()            # close resources            cursor.close()            MyUtil.closeConn(cnx)        return res

参考文章:mysql 连接池

原创粉丝点击