Python之第三方模块之pymysql

1. 介绍

在搭建测试框架过程中,会遇到需要频繁操作数据库的情况,会用到pymysql进行数据库的操作

PyMySQL 是一个纯 Python 实现的 MySQL 客户端库,支持兼容 Python 3

2.安装

pip install pymysql

3.使用步骤

3.1 与数据库建立连接

conn = pymysql.connect(
    host='127.0.0.1',  # 与本地数据库建立连接,可以尝试其他电脑的ip地址
    port=3306,  # 端口可写可不写,默认3306
    user='root',
    password="111",
	database="navicat_test1",  # 选择一个库,关键字可以简化为db
    charset="utf8mb4"
)  # 更多参数可以点进connect的源码去看

3.2 产生游标

cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)
# 括号内不填写额外参数数据是元组指定性不强[(), ()]
# 让数据自动组织成字典,括号内填写pymysql.cursors.DictCursor指定返回的是[{},{}]

3.3 编写sql

select code from users_verifycode where mobile= '15191857925' order by add_time desc limit 1;

 3.4 代码执行sql

rows= cursor.execute(sql)  # 返回sql影响的数据行数
print(rows) #影响的行数

3.5 获取执行的结果

cursor.fetchone()  # 从当前位置 拿到一条执行结果
cursor.fetchall()  # 拿到所有结果
crusor.fetchmany(n)  # 从当前位置 拿到多个结果

如果是增删改操作的话,需要commit()

update_sql="delete  from users_verifycode where mobile='15191857925'"
cursor.execute(update_sql)  # 改动某个数据值
conn.commit()  # 针对 增 删 改 需要二次确认(代码确认

此外在创建连接的时候,可以设置自动commit

conn = pymysql.connect(
    host='127.0.0.1',
    port=3306,
    user='root',
    password="111",
    database="a_pro_user",
    charset="utf8mb4",
    autocommit=True,  # <---自动确认增删改
)

4.数据库类的封装



import pymysql

from common.log_util import logger
from common.parseData import base_data

data = base_data.get_ini_data()["mysql"]
DB_INFO  = {
    "host":data["MYSQL_HOST"],
    #ini文件读取的都是字符串,但是连接的时候需要的是数字,做转换
    "port":int(data["MYSQL_PORT"]),
    "user":data["MYSQL_USER"],
    "password":data["MYSQL_PASSWD"],
    "db":data["MYSQL_DB"]
}

class DbUtil:
    """
    数据库链接工具类
    """

    def __init__(self):
        #获取链接,**DB_INFO将字典解包传入
        self.conn = pymysql.connect(**DB_INFO,autocommit=True)
        #获取游标
        # 括号内不填写额外参数数据是元组指定性不强[(), ()]
        # 让数据自动组织成字典,括号内填写pymysql.cursors.DictCursor指定返回的是[{},{}]
        self.cursor = self.conn.cursor(cursor=pymysql.cursors.DictCursor)

    def __del__(self):
        """
        关闭游标和连接
        :return:
        """
        self.cursor.close()
        self.conn.close()

    def fetch_all(self, sql):
        """
        查询所有的sql
        :param sql:
        :return:
        """
        logger.info("执行sql:{}".format(sql))
        self.cursor.execute(sql)
        return self.cursor.fetchall()

    def fetch_one(self,sql):
        """
        查询单条结果
        :param sql:
        :return:
        """
        logger.info("执行sql:{}".format(sql))
        self.cursor.execute(sql)
        return self.cursor.fetchone()

    def execute_db(self,sql):
        try:
            logger.info("执行sql:{}".format(sql))
            self.cursor.execute(sql)
        except Exception as e:
            logger.info("执行SQL出错{}".format(e))


db = DbUtil()

if __name__ == '__main__':
    sql = "select code from users_verifycode where mobile= '15191857925' order by add_time desc limit 1;"
    res = db.fetch_one(sql)
    import pprint
    pprint.pprint(res)

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值