• 用pymysql封装项目通用的连接和查询


    📋 个人简介

    • 💖 作者简介:大家好,我是阿牛,全栈领域新星创作者。😜
    • 🎉 支持我:点赞👍+收藏⭐️+留言📝
    • 📣 系列专栏:拳打脚踢数据库🍁
    • 💬格言:要成为光,因为有怕黑的人!🔥
      请添加图片描述

    前些天发现了一个比较好的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。

    点击跳转到网站:人工智能学习

    前言

    一个项目通常都需要有数据库,而对于python这门语言,除了一些框架自带orm或者扩展的orm(像django自带orm,flask则需要扩展的orm),使用orm必然有他的好处,但毫无疑问你要花时间学习这个orm,那么接下来阿牛带你们用pymysql简单分装一个通用的连接,关闭和查询!

    pymysql 介绍与安装

    PyMySQL 是在 Python3.x 版本中用于连接 MySQL 服务器的一个库,Python2中则使用mysqldb。

    在终端使用以下指令安装:

    pip3 install PyMySQL
    
    • 1

    pymysql 的使用

    import  pymysql
    
    # 打开数据库连接,password为你的数据库密码,db是数据库名
    db = pymysql.connect(host="127.0.0.1",
                         user="root",
                         password=" ",
                         db=" ",
                         charset="utf8")
    
    # 使用 cursor() 方法创建一个游标对象
    cursor = db.cursor()
    
    # 使用 execute()  方法执行 SQL 查询 
    cursor.execute("SELECT VERSION()")
    
    # 使用 fetchone() 方法获取单条数据.
    data = cursor.fetchone()
    
    print("Database version : %s " % data)
    
    #关闭数据库连接
    db.close()
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22

    password为你的数据库密码,db是数据库名,操作前请先建立好你的mysql数据库。

    在这里插入图片描述
    如图,我连接成功并且获取到了我数据库的版本!

    方法execute执行我们的sql语句。
    在获取执行的结果时,可以指定获取的结果的条数,可以使用的选项如下:

    fetchone()         # 取得检索结果的一条数据
    
    fetchmany(n)       # 取得检索结果的n条数据
    
    fetchall()         # 取得检索结果的所有数据
    
    • 1
    • 2
    • 3
    • 4
    • 5

    需要注意的是,与读取文件时的指针类似,如果在同一段代码中,先使用fetchone()获取检索结果的第一条数据,然后再使用fetchmany(2)的话,指针会在检索结果的当前位置向后读取执行结果,而不会从头开始重新读取检索的结果。
    获取到的结果是元组。,如下图:

    在这里插入图片描述

    封装项目通用的连接和查询

    请自行写入密码和数据库

    import pymysql
    
    # 创建连接
    #return: 连接,游标
    def get_conn():
    
        # 创建连接
        conn = pymysql.connect(host="127.0.0.1",
                               user="root",
                               password="",
                               db="",
                               charset="utf8")
        # 创建游标
        cursor = conn.cursor()# 执行完毕返回的结果集默认以元组显示
        return conn, cursor
    
    
    # 关闭游标,连接
    def close_conn(conn, cursor):
        cursor.close()
        conn.close()
    
    
    def query(sql,*args):
        """
        封装通用查询
        :param sql:
        :param args:
        :return: 返回查询到的结果,((),(),)的形式
        """
        conn, cursor = get_conn()
        cursor.execute(sql,args)
        res = cursor.fetchall()
        close_conn(conn, cursor)
        return res
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    因此,我们在查询时只需要调用query()函数就行,*args可以让其传入任意个参数或者不传参数,只需要sql语句中的占位符和参数个数对应就可以!

    使用如下图所示
    在这里插入图片描述

    结语

    只要你的sql过关,pymsql也可以帮助你完成项目!不一定需要使用orm哦!

    如果你觉得博主写的还不错的话,可以关注一下当前专栏,博主会更完这个系列的哦!也欢迎订阅博主的其他好的专栏。

    🏰系列专栏
    👉软磨 css
    👉硬泡 javascript
    👉flask框架快速入门

  • 相关阅读:
    【学习方法】手机越戒越上瘾?三招让你戒掉手机玩命学习!
    接口优化1
    [附源码]Python计算机毕业设计钓鱼爱好者交流平台
    Unity游戏开发基础组件
    D. Count GCD(数论/gcd/素数筛/容斥)
    ElasticSearch 学习8 :ik分词器的扩展,及java调用ik分词器的analyzer
    位、字节、字、字长的概念以及存储单位的的换算
    clickhouse单节点以及集群的安装
    Unity 接入Admob SDK 打Apk 过程中遇到的问题
    PE结构学习(3)_RVA转换成FOA
  • 原文地址:https://blog.csdn.net/qq_57421630/article/details/125912992