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

中国建设项目招标网站长沙外贸公司排名

中国建设项目招标网站,长沙外贸公司排名,河南省住房和城乡建设厅二维码网站,自己做appflask用DBUtils实现数据库连接池 在 Flask 中#xff0c;DBUtils 是一种实现数据库连接池的方案。DBUtils 提供了持久性#xff08;persistent#xff09;和透明的#xff08;transient#xff09;两种连接池类型。 首先你需要安装 DBUtils 和你需要的数据库驱动。例如DBUtils 是一种实现数据库连接池的方案。DBUtils 提供了持久性persistent和透明的transient两种连接池类型。 首先你需要安装 DBUtils 和你需要的数据库驱动。例如如果你的数据库是 MySQL你需要安装 mysql-connector-python也可以用pymysql: pip install DBUtils mysql-connector-python然后你可以使用 Flask 的应用工厂模式来创建一个数据库连接池。下面是一个例子 from flask import Flask, g from DBUtils.PooledDB import PooledDB import mysql.connectordef create_app():app Flask(__name__)# 这些配置项应该放在你的配置文件中app.config.update(DB_HOST127.0.0.1,DB_DATABASEtest,DB_USERroot,DB_PASSWORDpassword,DB_PORT3306)pool PooledDB(mysql.connector,maxconnections10,hostapp.config[DB_HOST],databaseapp.config[DB_DATABASE],userapp.config[DB_USER],passwordapp.config[DB_PASSWORD],portapp.config[DB_PORT])app.before_requestdef before_request():g.conn pool.connection()app.teardown_requestdef teardown_request(exception):g.conn.close()return app在这个例子中我们在每个请求开始前从连接池中获取一个连接并在请求结束后关闭连接。g 是 Flask 提供的一个全局对象我们可以用它来存储请求级别的数据比如数据库连接。 使用连接的时候可以使用 g.conn.cursor() 来创建一个新的游标。 这只是一个基本的例子实际使用中你可能需要处理更多的情况比如连接超时、重试、错误处理等。 当然也可以使用 PyMySQL 连接 MySQL 数据库这取决于你的特定需求和环境。 PyMySQL 是一个纯 Python 实现的 MySQL 客户端它没有依赖 C 扩展或者 MySQL 的原生客户端库所以它更容易安装尤其在像 Windows 这样的环境中。而且 PyMySQL 也提供了完整的 Pythonic 的接口包括异常处理、上下文管理器等特性。 另一方面像 mysql-connector-python 这样的包通常会使用 C 扩展或者原生的客户端库所以它们的性能可能会比 PyMySQL 更好。同时由于它们使用了原生的客户端库所以它们也可能支持更多的 MySQL 特性。 所以你是否应该使用 PyMySQL 还是 mysql-connector-python取决于你的特定需求。如果你需要更好的性能或者需要使用一些 PyMySQL 不支持的 MySQL 特性那么 mysql-connector-python 可能是更好。如果你只需要更简单的安装过程或者更 Pythonic 的接口那么 PyMySQL 就行。 如果你想在 Flask 应用中使用 PyMySQL 和 DBUtils 实现连接池你只需要将上面例子中的 mysql.connector 替换为 pymysql然后将相应的配置参数修改为 PyMySQL 支持的参数即可。 Flask 的 g 对象 Flask 的 g 是一个特殊的对象它为每一个请求提供了一个全局的存储空间。g 对象的生命周期只在一个请求周期内这意味着它在每个请求开始时被创建然后在请求结束时销毁。每个请求都会有自己的 g 对象。 在单次请求中g 对象常常被用来存储像数据库连接或者认证信息这样的数据。例如在请求处理开始时你可能会打开一个数据库连接并将其存储在 g 对象中然后在请求的后续处理中你可以从 g 对象中获取并使用这个数据库连接。 在前面的例子中我们使用 g.conn pool.connection() 在请求开始时创建一个数据库连接并将其存储在 g 对象中。然后在请求结束时我们使用 g.conn.close() 关闭这个数据库连接。这样我们可以确保每个请求都有自己的数据库连接而且这个连接会在请求结束时被正确地关闭。 需要注意的是g 对象只在单次请求中是全局的不同的请求中的 g 对象是隔离的。你不能在一个请求中设置 g 对象的某个属性然后在另一个请求中读取它。这是因为 Flask 为每个请求创建了一个新的 g 对象。在多线程环境下Flask 使用线程局部存储来确保每个请求都有自己的 g 对象这样就避免了请求之间的数据冲突。 补充 PooledDB 是 DBUtils 包中用于创建数据库连接池的类。它的构造函数接受以下参数 creator必需参数。这应该是一个数据库模块它应该包含一个 connect 方法用于建立数据库连接。 mincached可选参数缺省值为 0。这是启动时会创建的空闲连接的数量。 maxcached可选参数缺省值为 0。这是连接池中空闲连接的最大数量。如果设置为 0连接池的大小没有上限。 maxconnections可选参数缺省值为 0。这是连接池中活动连接的最大数量。如果设置为 0连接池的大小没有上限。 blocking可选参数缺省值为 True。如果设置为 True当请求的连接数量超过 maxconnections 时请求会被阻塞直到有连接可用。如果设置为 False当请求的连接数量超过 maxconnections 时会抛出一个 TooManyConnections 异常。 maxshared可选参数缺省值为 0。当连接的请求数量超过这个数值时连接会被共享。 maxusage可选参数缺省值为 0。一个连接最多被重复使用的次数。如果设置为 0连接的使用次数没有上限。 setsession可选参数缺省值为 None。这应该是一个字符串列表每个字符串是在连接创建后要执行的 SQL 语句。这可以用于设置 session 级别的变量。 setsession 参数允许你在数据库连接创建后但在返回给客户端使用之前执行一些 SQL 语句。这对于设置会话级别session-level的数据库参数特别有用。 例如你可以在每个连接创建后设置事务的隔离级别或者设置时区等参数。这些设置在数据库的这个会话期间都会一直有效。 这里有一个简单的例子 from DBUtils.PooledDB import PooledDB import pymysqlpool PooledDB(creatorpymysql,host127.0.0.1,userroot,passwordpassword,databasetest,setsession[SET AUTOCOMMIT 0, # 设置自动提交为关闭SET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED, # 设置事务的隔离级别为 READ COMMITTED], )在这个例子中我们使用 setsession 参数在每个连接创建后执行两个 SQL 语句。第一个语句是关闭自动提交SET AUTOCOMMIT 0第二个语句是将事务的隔离级别设置为 READ COMMITTEDSET SESSION TRANSACTION ISOLATION LEVEL READ COMMITTED。这两个设置会在连接的整个生命周期中保持有效直到连接被关闭。 需要注意的是你的数据库用户需要有足够的权限来执行 setsession 中的 SQL 语句。如果没有足够的权限连接创建会失败并抛出一个异常。 除了这些参数PooledDB 的构造函数还会接受任何传递给 creator 的 connect 方法的参数。 PooledDB 构造函数的设计是非常灵活的它允许你传入任何你需要的参数到 creator数据库驱动的 connect 方法。 creator 通常是一个数据库模块它有一个 connect 方法用于创建数据库连接。这个 connect 方法的参数取决于你使用的数据库模块。例如在使用 PyMySQL 时connect 方法可能需要 host、user、password、database 等参数。 PooledDB 会把除了它自己的参数之外的所有参数都传递给 creator 的 connect 方法。例如 from DBUtils.PooledDB import PooledDB import pymysqlpool PooledDB(creatorpymysql, # 数据库模块maxconnections10, # PooledDB 的参数host127.0.0.1, # connect 方法的参数userroot, # connect 方法的参数passwordpassword, # connect 方法的参数databasetest, # connect 方法的参数 )在这个例子中maxconnections 是 PooledDB 的参数而 host、user、password、database 都是 connect 方法的参数。这些 connect 方法的参数会被 PooledDB 捕获并在每次需要创建新的数据库连接时传递给 connect 方法。 这样的设计使得 PooledDB 能够很方便地与任何遵循 DB-API 规范的数据库模块一起使用不论这个模块的 connect 方法需要哪些参数。
http://www.hyszgw.com/news/80828.html

相关文章:

  • 密云郑州阳网站建设网页设计师做什么
  • 手机网站 尺寸辽宁建设工程信息网那个
  • 企业做网站须要注意些什么火车wordpress
  • 网站建设需要哪些资质福州做网站需要多少钱
  • 企业营销型企业网站建设棋牌游戏平台
  • 保健品网站建设方案书模板wordpress 输出数组
  • 网站免费认证联盟购物网站开发实战
  • server 2008 网站部署番禺区pc端网站建设
  • 微网站功能介绍品牌策划方案3000字
  • python培训视频教程河北网络营销推广seo
  • 杨凌网站建设哪家好西青房地产网站建设
  • 公司网站制作高端企业门户网站需求文档
  • 电大的网站界面ui设计训练怎么做专门做cg视频网站
  • 买购网官方网站西宁网站建设加盟代理
  • 建设向58同城的网站广东省住房与城乡建设部网站
  • 招远网站建设多少钱网件路由器无法登录
  • 物流建设网站学院网站建设的作用
  • 网页制作 公司网站wordpress画廊投票
  • 湖北网站推广宣传专业软件网站建设
  • 网站上传用什么软件做视频wordpress 3.6
  • 怎么做网站框架广州网站开发网络公司
  • 山海关建设局网站深圳光明区
  • 上海网站排名推广平面设计制作公司
  • 淄博 网站推广凡科建站可以多人协作编辑吗
  • 中国建设银行网站开通短信服务自己开网站需要什么
  • 网站建设需要具备哪些wordpress 列表页模板
  • 中国建设官方网济宁seo营销
  • 皖icp备 网站建设网页制作属于哪个专业
  • 做网站浏览器郑州推广优化公司
  • wordpress搭建付费网站app公司