都说打开关闭数据库很消耗资源,影响效率.但到底打开关闭一次数据库会怎样影响效率,影响程度有多大,对我这种轻量级的使用用户是否可以接受这种效率损失,于是就有了下面的测试过程.(在此申明:我的测试是基于我的开发环境所得,是不权威的,甚至是片面的,仅供参考,读者朋友可采用以下代码对自己的开发环境进行实测)

1)首先测试本机mysql数据库开关100次效率如何

import pymysql
from datetime import datetime #必须这样,否则出错
i = 1
btime = datetime.now()
while i <= 100:
    starttime = datetime.now()
    #本机数据库
    connect = pymysql.connect(host='localhost',
                              port=3306,
                              user='pubuser',  # 连接数据库名称
                              password='123321',  # 连接数据库密码
                              db='test-pythondata',  # 数据库名称
                              charset='utf8')
    # ----获取光标
    cursor = connect.cursor()
    cursor.close() #关闭光标
    connect.close() #关闭连接
    endtime = datetime.now()

    print(i,' ',endtime-starttime)
    i += 1
etime = datetime.now()
print('总:',etime-btime,' 平均:',(etime-btime)/100)

运行后输出结果如图:

pymysql 封装添删改查 自动重连 pymysql close_数据库

小结:本机打开关闭100次MySQL数据库
总: 0:00:00.784442  平均: 0:00:00.007844
平均耗时0.0078秒

2) 再测试内网开关mysql数据库100次效率如何

import pymysql
from datetime import datetime #必须这样,否则出错
i = 1
btime = datetime.now()
while i <= 100:
    starttime = datetime.now()
    #内网17数据库
    connect = pymysql.connect(host='192.168.8.17',
                              port=3306,
                              user='pubuser',  # 连接数据库名称
                              password='123321',  # 连接数据库密码
                              db='test-pythondata',  # 数据库名称
                              charset='utf8')
    # ----获取光标
    cursor = connect.cursor()
    cursor.close() #关闭光标
    connect.close() #关闭连接
    endtime = datetime.now()

    print(i,' ',endtime-starttime)
    i += 1
etime = datetime.now()
print('总:',etime-btime,' 平均:',(etime-btime)/100)

运行后输出结果如图:

pymysql 封装添删改查 自动重连 pymysql close_pymysql 封装添删改查 自动重连_02

小结:内网打开关闭100次MySQL数据库
总: 0:00:01.396821  平均: 0:00:00.013968

平均耗时0.014秒

3)本机连续开关1000次效率如何

pymysql 封装添删改查 自动重连 pymysql close_pymysql 封装添删改查 自动重连_03

小结:本机打开关闭1000次MySQL数据库
总: 0:00:13.470841  平均: 0:00:00.013471
平均耗时0.013秒

4)内网连续开关1000次效率如何

pymysql 封装添删改查 自动重连 pymysql close_pymysql 封装添删改查 自动重连_04

小结:内网打开关闭1000次MySQL数据库
总: 0:00:13.243744  平均: 0:00:00.013244
平均耗时0.013秒

总结:(以上数据仅供参考,不具有权威性)小数据量的本地开关数据库只需要0.007秒左右,内网开关数据库只需要0.013秒左右;1000次以上的开关数据库本地与内网效率相近大概0.013秒左右.

最终结论:对于我本人这样的小轻量数据应用来说,这个效率是可以接受的.暂时可以不必考虑一步读写,连接池之类的应用,就写以下纯的pymysql CRUD函数,便于开发应用就可以了