Python:MySQL数据库及连接池的使用

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档

文章目录

  • 前言
  • 一、使用的场景
  • 二、使用步骤
  • 1.安装库
  • 1.简单示例
  • 2.示例(公共模块+连接池)
  • 总结

  • 前言

    提示:需要对Python有一定的学习了解

    例如:编程语言的应用离不开数据存储,通常会使用各种类型的数据库进行数据存储;例如:Oracle,SqlServer,MySQL等关系型数据库。


    一、使用的场景

    1:构建web网站,数据库存储网站基本和用户数据信息。
    2:爬虫数据存储,通过程序爬取数据,需要保存到数据库中以待处理和使用。
    3:市面上的各种APP,小程序,工业软件等的数据也需要存储到数据库
    所以连接数据库是必要的,Python以语法简单著称,所以连接数据库也较为简单。

    二、使用步骤

    我使用的是PyMySQL库

    1.安装库

     pip3 install PyMySQL
    

    若后面连接有问题,看看版本兼容,网上查查问题就行

    1.简单示例

    代码如下(示例):

    # 导入pymysql库
    import pymysql
     
    # 打开数据库连接,记得替换成你实际的参数对应值
    # host:数据库服务实际地址,user:用户名,password:密码,database:数据库名称
    db = pymysql.connect(host='localhost',
                         user='***',
                         password='***',
                         database='***')
     
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = db.cursor()
     
    # 使用 execute()  方法执行 SQL 查询 
    cursor.execute("select * from KC")
     
    # 使用 fetchone() 方法获取单条数据.
    data = cursor.fetchone()
    # 打印数据结果
    print (data)
     
    # 关闭数据库连接
    db.close()
    

    2.示例(公共模块+连接池)

    连接池模块代码如下(示例):

    import pymysql
    from dbutils.pooled_db import PooledDB
    
    # 数据库配置
    DB_CONFIG = {
        'host': '127.0.0.1',
        'user': '***',
        'password': '***',
        'database': 'you database',
        'charset': 'utf8mb4',
        'cursorclass': pymysql.cursors.DictCursor,
        'maxconnections': 10,  # 连接池允许的最大连接数,0和None表示不限制连接数
        'mincached': 2,  # 初始化时,连接池中至少创建的空闲的连接,0表示不创建
        'maxcached': 5,  # 连接池中最多闲置的连接,0和None不闲置连接
        'maxshared': 3,  # 连接池中最多共享的连接数量,0和None表示全部连接都是专用的
        'blocking': True,  # 连接池中如果没有可用连接后,是否阻塞等待。True,等待;False,不等待然后报错
        '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
    }
    
    # 创建连接池
    db_pool = PooledDB(
        creator=pymysql,  # 使用链接数据库的模块
        # maxconnections=DB_CONFIG['maxconnections'],  # 连接池允许的最大连接数,0和None表示不限制连接数
        # host=DB_CONFIG['myhost'],
        # port=3306,
        # user=DB_CONFIG['myuser'],
        # password=DB_CONFIG['mypassword'],
        # database=DB_CONFIG['mydatabase'],
        # charset=DB_CONFIG['mycharset'],
        # cursorclass=DB_CONFIG['mycursorclass'],
        **DB_CONFIG  # 其他配置
    )
    
    
    # 获取连接
    def get_conn():
        return db_pool.connection()
    
        # 你可以将这个函数(get_conn)添加到你的ORM或DAO层中,以便在需要时获取数据库连接
    

    使用模块代码如下

    #引用模块
    from ConnectionPool import get_conn
    #连接数据库
    conn = get_conn()
    # 使用 cursor() 方法创建一个游标对象 cursor
    cursor = conn.cursor()
    # 使用 execute()  方法执行 SQL 查询 
    cursor.execute("select * from KC")
    # 使用 fetchone() 方法获取单条数据.
    data = cursor.fetchone()
    # 打印数据结果
    print (data)
    

    使用时只需在当期模块中导入连接池模块,使用其连接方法即可使用,不用每次都去写重复的连接代码


    总结

    1.其他编程语言连接数据库思想也如此,具体写法有所不同而已。例如java开发框架(spring、spring boot)对于数据库连接可能更简便,但需要学习一下。
    2.使用连接池方法可以减少重复工作量,让代码易读可维护性高。

    作者:valley-m

    物联沃分享整理
    物联沃-IOTWORD物联网 » Python:MySQL数据库及连接池的使用

    发表回复