Python数据库连接池DBUtils(基于pymysql模块连接数据库)

DBUtils是Python的一个用于实现数据库连接池的模块。
此连接池有两种连接模式:

BDUtils数据库链接池:
模式一:基于threaing.local实现为每一个线程创建一个连接,关闭是伪关闭,当前线程可以重复
模式二:连接池原理

  • 如果有三个线程在数据库中获取连接:

    [En]

    if there are three threads to obtain a connection in the database:

    如果三个人同时出现,则一个人给出了联系。

    [En]

    If three come at the same time, one person gives a connection.

    如果每隔一段时间出现一个线程,则一个连接可以服务三个线程。

    [En]

    If one comes at a time interval, three threads can be served with one connection.*

  • 有可能:1个连接就可以为三个线程提供服务
    有可能:2个连接就可以为三个线程提供服务
    有可能:3个连接就可以为三个线程提供服务

​PS:maxshared在使用pymysql中均无用。链接数据库的模块:只有threadsafety>1的时候才有用。
​

模式一:为每个线程创建一个连接,线程即使调用了close方法,也不会关闭,只是把连接重新放到连接池,供自己线程再次使用。当线程终止时,连接自动关闭。(如果线程比较多还是会创建很多连接,推荐使用模式二)

模式二:创建一批连接到连接池,供所有线程共享使用,使用完毕后再放回到连接池。(由于pymysql、MySQLdb等threadsafety值为1,所以该模式连接池中的线程会被所有线程共享。)

为什么要使用数据库连接池呢?

如果没有连接池,使用pymysql来连接数据库时,单线程应用完全没有问题;但如果涉及到多线程应用那么就需要加锁,一旦加锁那么连接势必就会排队等待(无法并发),当请求比较多时,性能就会降低了。

Original: https://blog.51cto.com/u_15722381/5483129
Author: ch3nnn
Title: Python数据库连接池DBUtils(基于pymysql模块连接数据库)

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/513535/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球