当前位置: 首页 > news >正文

云南网站建设优选平台a公司与企业k签订了建设k企业

云南网站建设优选平台,a公司与企业k签订了建设k企业,360搜索关键词优化软件,品牌网站设计图片mysql连接 1. 不使用连接池 我们知道使用pymysql连接数据库一般需要下面的步骤: 创建连接对象(一般使用connect或者是连接池) 创建游标对象 使用游标执行代码 使用游标获取结果并返回 # 返回的是元组(每个实例一个元组)! 关闭游标和连接 conn pymysql.connect(host, p…mysql连接 1. 不使用连接池 我们知道使用pymysql连接数据库一般需要下面的步骤: 创建连接对象(一般使用connect或者是连接池) 创建游标对象 使用游标执行代码 使用游标获取结果并返回 # 返回的是元组(每个实例一个元组)! 关闭游标和连接 conn pymysql.connect(host, port, ...) cursor conn.cursor() sql select * from goods; cursor.execute(sql) res cursor.fetchall() # 查看所有,可以查看一部分 print(res) cursor.close() conn.close() 2. 使用连接池 2.1 为什么需要连接池 连接池是connection对象的缓冲区他里面会存放一些connection当程序需要使用connection时如果连接池中有则直接从连接池获取不需要再重新创建connection。连接池让程序能够复用连接。资源复用. 可以尽量避免连接三次握手四次挥手等非业务流程带来的损耗。池化技术本质上说就是资源复用。 2.2 连接池管理 1、连接池维护着两个容器空闲池和活动池 2、空闲池用于存放未使用的连接活动池存放正在使用的连接活动池中的连接使用完之后要归还回空闲池 3、当需要连接时先判断空闲池是否有连接如果有则取出一个放置到活动池供程序使用 4、如果没有则判断活动池中连接是否达到最大连接数如果没有则创建一个连接放到活动池供程序使用。 5、如果空闲池中没有连接活动池中连接也达到上限则不能创建新连接此时会判断是否等待超时如果没有等待超时则需等待活动池中的连接归还回空闲池 6、如果等待超时可以采取多种处理方式例如直接抛出异常或将活动池中使用最久的连接移除掉归还回空闲池以供程序使用 2.3 连接池数量确定 参考 首先解决一个问题为什么需要多个连接对于数据库而言每个连接都是独占的如果一个业务占用连接而又进入了IO等待那么这个业务就会一直占用这个连接其他业务也只能等待。如果开多条连接不同的业务就可以利用不同的连接通道来处理。 一般情况下线程池线程数量尽量与连接池中的连接数量一致。这样做可以避免不同线程之间抢资源或是资源过多线程处理不过来导致浪费的情况。注意这里说的一般情况是业务服务器与数据库服务器性能差不多的情况。其实数据库服务器也是使用多线程来处理业务如果连接数过多数据库会处理不过来。 另外如果不使用连接池就需要不同的线程去绑定不同的连接使得整个系统的耦合度变高。还要注意一点的是在一个数据库服务器中可能有多个连接池。比如一个连接池对应写业务与一个只处理写业务的线程池共同处理写数据库而再用另一套连接池只处理读业务与只读数据库连接这样做就实现了读写分离。 2. 步骤 获取锁 获取池子(可以定义最大连接数,常规的mysql连接参数等) 使用池子连接 定义游标 使用游标执行代码 使用游标获取结果并返回 关闭连接 import threading from typing import Listimport pymysql from dbutils.pooled_db import PooledDBfrom MovieRecSystem.config import redis_config, mysql_config from MovieRecSystem.utils.logger_util import loggerdef _encode(v, encodingUTF-8) - str:return str(v, encodingencoding) 单例是redis, 然后提供静态方法 可以使用其它的 class DB(object):# 单例模式# 必须要有一个静态的属性, 或者说类上的属性__lock threading.Lock() # 锁__pool None # 只要是单例就会有一个静态的属性, mysql就是我们的线程池def __init__(self):self.pool DB.__get_conn_pool() # 链接时是需要时间的,所以创建连接池! 保证整个运行只有一个线程staticmethoddef __get_conn_pool():就是获取一个连接池(因为是单例), 获取锁之后再添加实例(和redis一样)但是不代表已经连接成功了,还需要connection:return:if DB.__pool is None:DB.__lock.acquire()try:if DB.__pool is None:# 获取配置信息_cfg mysql_config.cfg.copy()if creator not in _cfg:raise ValueError(必须给定creator参数)if _cfg[creator] ! pymysql:raise ValueError(creator参数必须给定为pymysql)del _cfg[creator]DB.__pool PooledDB(pymysql, **_cfg)# DB.__pool PooledDB(# creatorpymysql, # 使用链接数据库的模块# maxconnections500, # 连接池允许的最大连接数0和None表示不限制连接数# mincached2, # 初始化时链接池中至少创建的空闲的链接0表示不创建# maxcached50, # 链接池中最多闲置的链接0和None不限制# blockingTrue, # 连接池中如果没有可用连接后是否阻塞等待。True等待False不等待然后报错# maxusageNone, # 一个链接最多被重复使用的次数None表示无限制# setsession[], # 开始会话前执行的命令列表。如[set datestyle to ..., set time zone ...]# ping1,# host121.40.96.93,# port3306,# usergerry,# password123456,# databaserec_system,# charsetutf8# )except Exception as e:raise ValueError(创建Mysql数据库连接池异常!) from efinally:DB.__lock.release()return DB.__pooldef _get_connection(self):conn self.pool.connection()cursor conn.cursor(cursorpymysql.cursors.DictCursor)return conn, cursorstaticmethoddef _close_connection(conn, cursor):if cursor:try:cursor.close()except Exception as e:logger.error(关闭Mysql连接cursor异常。, exc_infoe)if conn:try:conn.close()except Exception as e:logger.error(关闭Mysql连接conn异常。, exc_infoe)# 执行查询结果(这个可以放到缓存里)def query_sql(self, sql, **params):conn, cursor self._get_connection()try:cursor.execute(sql, params)result cursor.fetchall()except Exception as e:raise ValueError(fQuery查询异常当前sql语句为:{sql}, 参数类别为:{params}.) from efinally:self._close_connection(conn, cursor)return result# 执行def execute_sql(self, sql, **params):conn, cursor self._get_connection()try:cursor.execute(sql, params)result cursor.lastrowidconn.commit()except Exception as e:conn.rollback()raise ValueError(fExecute执行异常当前sql语句为:{sql}, 参数类别为:{params}.) from efinally:self._close_connection(conn, cursor)return result
http://www.sadfv.cn/news/225934/

相关文章:

  • 做百度网上搜索引擎推广最好网站网站程序找人做还是自己做
  • 有哪些可以做h5的网站网站系统正在升级维护
  • 找个网站看看甜甜圈wordpress主题
  • 做ktv的网站淘宝客做网站好还是建群号
  • 佛山新网站建设价格专业做网站服务
  • 没有服务器怎么先做网站官方网站的域名
  • 万云网络网站网站运营设计
  • 青岛建设教育网站大学生建设网站
  • 高端人才招聘网站黄骅港十里金沙滩门票
  • 德阳网站建设 选哪家好屏蔽阿里云网站吗
  • 建站塔山双喜wordpress注册登录问题
  • 美点网络公司网站邹平建设局网站
  • 公司网站的seo优化物理结构网站
  • 重庆本地网站论坛有哪些九江网站设计公司
  • 任县网站建设价格信息建设网站的申请信用卡分期付款
  • 昆明网站搭建公司的企业邮箱怎么查
  • 福建省住房与城乡建设部网站营销网站建立公司
  • 网站备案是在哪里的wordpress接入外网域名
  • seo网站推广是什么意思如何建立公司网站是什么
  • 做网站认证违法吗wordpress 文章表
  • 汉化版网站开发软件白酒网站源码
  • 三合一网站建设公司网站域名怎么改
  • 建设网站的文案范文网站seo优化书籍
  • 外贸网站 万网软件工程培训机构学费
  • 企业门户网站开发代码苏州市城乡建设局网站首页
  • 上海景泰建设股份有限公司网站链接购买平台
  • 建设银行网站打不开别的网站可以用吗营销咨询顾问
  • 盘锦网站制作公司上海做响应式网站的公司
  • 宁波网站建设设计公司信息黑龙江省建设协会网站首页
  • 网站做百度排名wordpress 繁体语言包