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

泉州市培训建设系统中心网站云原神官方网站正版下载

泉州市培训建设系统中心网站,云原神官方网站正版下载,营销技巧在线完整免费观看,找个可以直接观看的网站目录10.数据库连接池模式一模式二示例#xff1a;使用数据库连接池进行登录验证10.数据库连接池 参考#xff1a;https://www.cnblogs.com/wangkun122/articles/8992637.html 通过DBUtils实现数据库连接池 安装#xff1a; pip install DBUtils1.2注意#xff1a;pytho… 目录10.数据库连接池模式一模式二示例使用数据库连接池进行登录验证10.数据库连接池 参考https://www.cnblogs.com/wangkun122/articles/8992637.html 通过DBUtils实现数据库连接池 安装 pip install DBUtils1.2注意python3现在回安装最新2.0版本的from DBUtils.PersistentDB import PersistentDB这样导入时会找不到模块要安装低版本到1.2版本。 模式一 为每个线程创建一个连接线程即使调用了close方法也不会关闭只是把连接重新放到连接池供自己线程再次使用。当线程终止时连接自动关闭 。 from DBUtils.PersistentDB import PersistentDB import pymysql POOL PersistentDB(creatorpymysql, # 使用链接数据库的模块maxusageNone, # 一个链接最多被重复使用的次数None表示无限制setsession[], # 开始会话前执行的命令列表。如[set datestyle to ..., set time zone ...]ping0,# ping MySQL服务端检查是否服务可用。# 如0 None never, 1 default whenever it is requested, 2 when a cursor is created, 4 when a query is executed, 7 alwayscloseableFalse,# 如果为False时 conn.close() 实际上被忽略供下次使用再线程关闭时才会自动关闭链接。如果为True时 conn.close()则关闭链接那么再次调用pool.connection时就会报错因为已经真的关闭了连接pool.steady_connection()可以获取一个新的链接threadlocalNone, # 本线程独享值得对象用于保存链接对象如果链接对象被重置host127.0.0.1,port3306,userroot,password123,databasepooldb,charsetutf8 )def func():conn POOL.connection(shareableFalse)cursor conn.cursor()cursor.execute(select * from tb1)result cursor.fetchall()cursor.close() #这里的关闭没有真正的关闭了线程在使用的话还是使用的那一个链接conn.close()func()模式二 创建一批连接到连接池供所有线程共享使用。 由于pymysql、MySQLdb等threadsafety值为1所以该模式连接池中的线程会被所有线程共享。 import pymysqlfrom DBUtils.PooledDB import PooledDB PYMYSQL_POOL PooledDB(creatorpymysql, # 使用链接数据库的模块maxconnections6, # 连接池允许的最大连接数0和None表示不限制连接数mincached2, # 初始化时链接池中至少创建的空闲的链接0表示不创建maxcached5, # 链接池中最多闲置的链接0和None不限制maxshared3, #这个参数没多大用 最大可以被大家共享的链接# 链接池中最多共享的链接数量0和None表示全部共享。PS: 无用因为pymysql和MySQLdb等模块的 threadsafety都为1所有值无论设置为多少_maxcached永远为0所以永远是所有链接都共享。blockingTrue, # 连接池中如果没有可用连接后是否阻塞等待。True等待False不等待然后报错maxusageNone, # 一个链接最多被重复使用的次数None表示无限制setsession[], # 开始会话前执行的命令列表。如[set datestyle to ..., set time zone ...]ping0,# ping MySQL服务端检查是否服务可用。# 如0 None never, 1 default whenever it is requested, 2 when a cursor is created, 4 when a query is executed, 7 alwayshost127.0.0.1,port3306,userroot,password123456,databases8day127db,#链接的数据库的名字charsetutf8)def func():# 检测当前正在运行连接数的是否小于最大链接数如果不小于则等待或报raise TooManyConnections异常# 否则# 则优先去初始化时创建的链接中获取链接 SteadyDBConnection。# 然后将SteadyDBConnection对象封装到PooledDedicatedDBConnection中并返回。# 如果最开始创建的链接没有链接则去创建一个SteadyDBConnection对象再封装到PooledDedicatedDBConnection中并返回。# 一旦关闭链接后连接就返回到连接池让后续线程继续使用。conn POOL.connection()# print(th, 链接被拿走了, conn1._con)# print(th, 池子里目前有, pool._idle_cache, \r\n)cursor conn.cursor()cursor.execute(select * from tb1)result cursor.fetchall()conn.close() #这里的关闭也没有彻底关闭而是将线程放回数据库连接池中去了func()示例使用数据库连接池进行登录验证 首先把数据库连接池放进配置文件 settings.py from datetime import timedelta from redis import Redis from DBUtils.PooledDB import PooledDB import pymysqlclass Config():DEBUG TrueSECRET_KEY AKL;FGMASDFASPERMANENT_SESSION_LIFETIME timedelta(minutes20)SESSION_REFRESH_EACH_REQUEST True # 是否应该为每一个请求设置cookie默认为True如果为False则必须显性调用set_cookie函数SESSION_TYPE redis # 使用redis存储sessionPYMYSQL_POOL PooledDB(creatorpymysql, # 使用链接数据库的模块maxconnections6, # 连接池允许的最大连接数0和None表示不限制连接数mincached2, # 初始化时链接池中至少创建的空闲的链接0表示不创建maxcached5, # 链接池中最多闲置的链接0和None不限制maxshared3, # 这个参数没多大用 最大可以被大家共享的链接blockingTrue,maxusageNone, # 一个链接最多被重复使用的次数None表示无限制setsession[], ping0,host127.0.0.1,port3306,userroot,password123456,databaseflask01, # 链接的数据库的名字charsetutf8)class ProductionConfig(Config):SESSION_REDIS Redis(host127.0.0.1, port6379)class DevelopmentConfig(Config):SESSION_REDIS Redis(host127.0.0.1, port6379)class TestConfig(Config):passsql_helper.py 使用数据库连接池 import pymysql from flask import current_appclass SQLHelper():staticmethoddef open():POOL current_app.config[PYMYSQL_POOL]conn POOL.connection()cursor conn.cursor(cursorpymysql.cursors.DictCursor)return conn, cursorstaticmethoddef close(conn, cursor):conn.commit()cursor.close()conn.close()classmethoddef fetch_one(cls, sql, args):conn, cursor cls.open()cursor.execute(sql, args)obj cursor.fetchone()cls.close(conn, cursor)return objclassmethoddef fetch_all(cls, sql, args):conn, cursor cls.open()cursor.execute(sql, args)obj cursor.fetchall()cls.close(conn, cursor)return objaccount.py 登录验证 from flask import Blueprint, request, render_template, session, redirect from uuid import uuid4 from ..utils.sql_helper import SQLHelperac Blueprint(ac, __name__)ac.route(/login, methods[GET, POST]) def login():if request.method GET:return render_template(login.html)user request.form.get(user)pwd request.form.get(pwd)# 数据库中查询数据obj SQLHelper.fetch_one(select id,name from users where name%s and pwd%s, [user, pwd])if user admin and pwd 123:uid str(uuid4())session.permanent Truesession[user_info] {id:obj[id], name:user}return redirect(/index)else:return render_template(login.html, msg用户名或密码错误)ac.route(/index) def logout():return welcome
http://www.hkea.cn/news/14540732/

相关文章:

  • 电子商务 网站系统成都网站建设门户
  • 湖南长沙门户网站Windows wordpress搭建
  • 网站静态化 更新wordpress如何修改后台网址
  • 电子商务网站开发数据库表格wordpress cnki
  • 石家庄做网站网络公司建设网站设计
  • 国外化工网站模板网站开发png图标素材
  • 东莞互联网营销网站建设ip备案信息查询
  • 网站做全局搜索meet wordpress
  • 教学网站模板下载广西建设职业技术学校官方网站
  • 淄博网站制作多样定制地理位置地图网站建设
  • 长春网页制作建站wordpress公司网站
  • 南水北调建设管理局网站深圳建网站需要多少钱
  • 做外贸网站案例企业管理app排行榜
  • 个人做医疗类网站违法网站 侧边栏
  • 质量检测中心培训网站网站程序开发语言
  • 网站被禁用如何解决最新站群
  • php 建设网站文件包上传的网站怎么做
  • 龙岩推广公司网站如何seo
  • 揭阳做网站设计响应式网站建设智能优化
  • 网站建设模块有哪些安平做网站做推广电话
  • 网页网站免费创意网站制作
  • 科协建设网站 方案wordpress本地环境转移
  • 黄岩做网站的公司网站备案 公司注销吗
  • 合肥高新区建设发展局网站开源php cms
  • 广州自助网站推广制作做网站工作
  • 建站平台软件windows wordpress 伪静态
  • 山东省济宁市建设厅官方网站网站建设的关键词
  • 正规的网站建设明细报价表秦皇岛百度推广
  • 网站建设排版页面网推怎么做
  • 人才网站建设公司网址怎么做出来的