dbutils

Flask之数据库连接池——DBUtils模块

强颜欢笑 提交于 2020-01-29 06:12:20
DBUtils DBUtils是Python的一个用于实现数据库连接池的模块。 此连接池有两种连接模式: 一、独立线程 模式一:为每个线程创建一个连接。线程即使调用了close方法,也不会关闭,只是把连接重新放到连接池,供自己线程再次使用。当线程终止时,才会将连接自动关闭。 但这种方法:一方面可能线程数特别多。不可控,需要控制线程 ;另一方面,每个线程要运行结束才能自动关闭,占有资源。 POOL = PersistentDB ( creator = pymysql , # 使用链接数据库的模块 maxusage = None , # 一个链接最多被重复使用的次数,None表示无限制 setsession = [ ] , # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."] ping = 0 , # ping MySQL服务端,检查是否服务可用。# 如:0 = None = never, 1 = default = whenever it is requested, 2 = when a cursor is created, 4 = when a query is executed, 7 = always (一般情况下,使用4就可以) closeable = False , # <一般不会改>,如果为False时

Flask之DBUtils数据库连接——实例

好久不见. 提交于 2020-01-21 07:04:46
工作实例如下: 1. 创建Flask基础框架; 2. 在根目录下,创建db_hepler,输入连接池设置; 具体设置参考: https://blog.csdn.net/weixin_45950544/article/details/103983191 3.导入POOL连接池,建立数据库连接,执行mysql语句; 如果在函数特别多的情况下,每个函数都要输入一遍数据库连接代码,过于麻烦; 对此,一个好的办法是在db_helper设置文件中,建立一个SQLHelper类;并在其中定义<增删改查>函数: 4. 通过增删改查函数定义后,可以直接在主程序中导入SQLHelper类,并实例化,然后用实例化的变量调用增删改查函数; < 推荐 >:也可以不用实例化SQLHelper类。直接在db_helper设置文件中给每个函数设置静态方法@staticmethod,具体设置如下: 还存在一种方法:在SQLHelper类中,将函数中的必要代码初始化,然后建立一个close函数,执行关闭动作;但是,这种方法类似于第一种方法,由于没有静态方法,每次执行都需要先实例化; 来源: CSDN 作者: 行走的学习机 链接: https://blog.csdn.net/weixin_45950544/article/details/103991843

解决mysql的gone away问题

喜你入骨 提交于 2020-01-06 21:55:31
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 背景 年底了,以年为单位的分表的数据量快达到巅峰了。最近经常收到DB相关的一些告警,经过一系列的排查,终于解决了告警,现整理如下。 问题描述:对海量数据的DB进行读写,报mysql gone away 原因分析: mysql出现ERROR : (2006, 'MySQL server has gone away') 的问题意思就是指client和MySQL server之间的链接断开了。 这类问题主要是 sql操作的时间过长,或者是传送的数据太大 1. 查看并调整timeout值 使用客户端工具或者Mysql命令行工具输入 show global variables like '%timeout%'; 就会显示与timeout相关的属性,这里我用docker模拟了一个测试环境。 mysql> show variables like '%timeout%'; +-----------------------------+----------+ | Variable_name | Value | +-----------------------------+----------+ | connect_timeout | 10 | | delayed_insert_timeout | 300 | | have

MySQL数据库学习笔记(十二)----开源工具DbUtils的使用(数据库的增删改查)

你说的曾经没有我的故事 提交于 2020-01-01 05:08:00
【声明】 欢迎转载,但请保留文章原始出处→_→ 生命壹号: http://www.cnblogs.com/smyhvae/ 文章来源: http://www.cnblogs.com/smyhvae/p/4085684.html 【正文】 这一周状态不太好,连续打了几天的点滴,所以博客中断了一个星期,现在继续。 我们在之前的几篇文章中学习了JDBC对数据库的增删改查。其实在实际开发中,一般都是使用第三方工具类,但是只有将之前的基础学习好了,在使用开源工具的时才能得心应手。如果对JDBC基础不太清楚,或者对本文看不太懂,建议先回顾一下本人之前的几篇和“MySQL数据库学习笔记”相关的文章。但是不管怎样,今后如果用到了数据库的增删改查,肯定是这篇文章中的代码用的最多。 一、DbUtils简介: DBUtils是apache下的一个小巧的JDBC轻量级封装的工具包,其最核心的特性是结果集的封装,可以直接将查询出来的结果集封装成JavaBean,这就为我们做了最枯燥乏味、最容易出错的一大部分工作。 下载地址: http://commons.apache.org/proper/commons-dbutils/download_dbutils.cgi 下载上图中的红框部分,然后解压。解压之后的文件如下 : 上图中红框部分的文件就是我们所需要的内容。 二、核心方法:

元数据,DBUtils工具,连接池

大憨熊 提交于 2019-12-26 05:28:19
1 元数据 1 .1 作用 使用元数据,可以编写 jdbc预编译statement 的参数以及 ResultSet 的结果个数和名称 。 1.2 三种元数据 1 )数据库元对象( DatabaseMetaData ) 知道连接的哪个数据库,必须使用数据库的元数据对象 2 )参数元对象( ParameterMetaData ) insert into studnetx(xxxx) values(?,?); 预编译 sql 之后,知道预编译的 sql 有几个参数,必须使用参数元数据 3 )结果集元对象 (ResultSetMetaData) ResultSet rs 知道表的字段数,和字段名称,必须使用结果集的元数据 1.3 方法 ParameterMetaData pmd = stmt.getParameterMetaData();// 获取参数元数据 int paramCount = pmd.getParameterCount();// 获取占位符参数的个数 ResultSetMetaData rsmd = rs.getMetaData();// 获取返回结果的结果集元数据 int columnCount = rsmd.getColumnCount(); //得到列数量 String columnName = rsmd.getColumnName(i); //到字段名称 2

DbUtils手册

风格不统一 提交于 2019-12-25 17:46:14
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> DbUtils手册 简介 概述 Apache Commons DbUtils是 Java 编程中的数据库操作实用工具,小巧简单实用。 DBUtils 封装了对 JDBC 的操作,简化了 JDBC 操作,可以少写代码。 优点 无资源泄漏 DBUtils类确保不会发生资源泄漏。 清理和清除代码 DBUtils类提供干净清晰的代码来执行数据库操作,而无需编写任何清理或资源泄漏防护代码。 Bean映射 DBUtils类支持从结果集中自动填充javabeans。 设计原则 小 DBUtils库的体积很小,只有较少的类,因此易于理解和使用。 透明 DBUtils库在后台没有做太多工作,它只需查询并执行。 快速 DBUtils库类不会创建许多背景对象,并且在数据库操作执行中速度非常快。 入门 POM <!-- https://mvnrepository.com/artifact/commons-dbutils/commons-dbutils --> <dependency> <groupId>commons-dbutils</groupId> <artifactId>commons-dbutils</artifactId> <version>1.7</version> </dependency> 依赖 <dependency

数据库连接池 DBUtils:

為{幸葍}努か 提交于 2019-12-07 15:10:37
import pymysql from DBUtils.PooledDB import PooledDB, SharedDBConnection POOL = PooledDB( creator=pymysql, # 使用链接数据库的模块 maxconnections=10, # 连接池允许的最大连接数,0和None表示不限制连接数 mincached=2, # 初始化时,链接池中至少创建的空闲的链接,0表示不创建 maxcached=5, # 链接池中最多闲置的链接,0和None不限制 maxshared=3, # 链接池中最多共享的链接数量,0和None表示全部共享。PS: 无用,因为pymysql和MySQLdb等模块的 threadsafety都为1,所有值无论设置为多少,_maxcached永远为0,所以永远是所有链接都共享。 blocking=True, # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错 maxusage=None, # 一个链接最多被重复使用的次数,None表示无限制 setsession=[], # 开始会话前执行的命令列表。如:["set datestyle to ...", "set time zone ..."] ping=0, # ping MySQL服务端,检查是否服务可用。# 如:0 = None

(Object[])null

落花浮王杯 提交于 2019-12-07 10:29:09
dbutils下QueryRunner.java 的一段代码: package org.apache.commons.dbutils; public <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh) throws SQLException { return this.query(conn, false, sql, rsh, (Object[])null); } 试题: public class TestClass { public static void main(String[] args) { ((TestClass)null).testMethod(); } private static void testMethod(){ System.out.println("testMethod"); } } 运行正常,输出testMethod null可以被强制类型转换成任意类型的对象,通过这样的方式可以执行对象的静态方法,但如果方法不是静态方法的话,由于null对象并没有被实例化(分配空间),因而运行时会报空指针错误。 总结: 1: null可以转化为任何类型 2: private 只是权限声明 2:static静态关键字 仅仅意味着可以不用实例化这个类 通过类名.方法名就可以访问

(Object[])null

微笑、不失礼 提交于 2019-12-06 18:42:25
dbutils下QueryRunner.java 的一段代码: package org.apache.commons.dbutils; public <T> T query(Connection conn, String sql, ResultSetHandler<T> rsh) throws SQLException { return this.query(conn, false, sql, rsh, (Object[])null); } 试题: public class TestClass { public static void main(String[] args) { ((TestClass)null).testMethod(); } private static void testMethod(){ System.out.println("testMethod"); } } 运行正常,输出testMethod null可以被强制类型转换成任意类型的对象,通过这样的方式可以执行对象的静态方法,但如果方法不是静态方法的话,由于null对象并没有被实例化(分配空间),因而运行时会报空指针错误。 总结: 1: null可以转化为任何类型 2: private 只是权限声明 2:static静态关键字 仅仅意味着可以不用实例化这个类 通过类名.方法名就可以访问

DBUtils工具的使用

生来就可爱ヽ(ⅴ<●) 提交于 2019-12-05 10:04:13
     简单的说DBUtils就是一个工具,一个操控数据库的组件,学过JDBC的应该都知道在对数据操控的时候代码量好大,还得注意各种双引号,一不小心就错了。DBUtils就是对JDBC的一个简单封装,目的就是简化代码量。   一般DBUtils的使用只涉及了一个QueryRunner类和它的两个方法和】,ResultSetHandler接口和它的两个实现类。 QueryRunner query():提供执行查询的操作 update():提供执行插入、更新、删除的操作 ResultSetHandler BeanHandler BeanListHandler 先介绍下项目结构: 数据库名称:_11_20_test_java 表名:test 使用连接池:阿里巴巴的druid连接池 下面是表创建好后的内容: 数据库和连接池的创建就直接跳过了 先创建好一个类JdbcUtil用于获取数据库的连接 import com.alibaba.druid.pool.DruidDataSourceFactory; import javax.sql.DataSource; import java.io.IOException; import java.io.InputStream; import java.sql.Connection; import java.sql.ResultSet; import