03_Python访问MySQL

在这里插入图片描述

连接MySQL数据库

MySQL API介绍

Python 标准数据库接口为 Python DB-API,Python DB-API为开发人员提供了数据库应用编程接口

不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。Python DB-API使用流程:

  1. 引入 API 模块。
  2. 获取与数据库的连接。
  3. 执行SQL语句和存储过程。
  4. 关闭数据库连接。

连接MySQL数据库

# pip install pymysql
import pymysql


# 源码中有连接参数
db = pymysql.connect(host="127.0.0.1", user="root", password="root", database="test", port=3306, charset="utf8")
# 通过连接获取游标
cursor = db.cursor()
cursor.execute("select version()")
result = cursor.fetchone()
print(result)
cursor.close()
db.close()

封装访问数据库代码

# 创建一个连接访问数据库的工具类
class MysqlHelp(object):
    # 初始化方法,来进行参数设置
    def __init__(self, host, db, user, passwd, port=3306, charset='utf8'):
        self.host = host
        self.user = user
        self.port = port
        self.passwd = passwd
        self.db = db
        self.charset = charset

    def open_conn(self):
        self.conn = pymysql.connect(host=self.host, user=self.user, password=self.passwd, database=self.db,port=self.port, charset=self.charset)
        self.cursor = self.conn.cursor()

    def close(self):
        self.cursor.close()
        self.conn.close()

    def get_db_version(self, sql):
        try:
            self.open_conn()
            self.cursor.execute(sql)
            return self.cursor.fetchone()
        except Exception as error:
            print(error)
        finally:
            self.close()


if __name__ == "__main__":
    sqlHelp = MysqlHelp("127.0.0.1", "test", "root", "root")
    print(sqlHelp.get_db_version("select version()"))

访问数据库基本操作

更新、删除、插入

import pymysql

# 创建一个连接访问数据库的工具类
class MysqlHelp(object):
    # 初始化方法,来进行参数设置
    def __init__(self, host, db, user, passwd, port=3306, charset='utf8'):
        self.host = host
        self.user = user
        self.port = port
        self.passwd = passwd
        self.db = db
        self.charset = charset

    def open_conn(self):
        self.conn = pymysql.connect(host=self.host, user=self.user, password=self.passwd, database=self.db,
                                    port=self.port, charset=self.charset)
        self.cursor = self.conn.cursor()

    def close(self):
        self.cursor.close()
        self.conn.close()

    def get_db_version(self, sql):
        try:
            self.open_conn()
            self.cursor.execute(sql)
            return self.cursor.fetchone()
        except Exception as error:
            print(error)
        finally:
            self.close()

    # 此方法完成update insert delete删除的功能
    def update(self, sql, parmas):
        try:
            self.open_conn()
            # insert update delete 返回的都是受影响的行数
            res = self.cursor.execute(sql, parmas)
            # 手动提交事务
            self.conn.commit()
            return res
        except Exception as error:
            print(error)
        finally:
            self.close()


if __name__ == "__main__":
    sqlHelp = MysqlHelp("127.0.0.1", "test", "root", "root")
    print(sqlHelp.get_db_version("select version()"))
    res = sqlHelp.update("insert into article (title, content, avatar) values (%s,%s,%s)", ['标题a', '内容a', '昵称a'])
    print(res)
    res = sqlHelp.update("update article set title = %s, content=%s, avatar=%s where id=%s",('标题A', '内容A', '昵称A',1))
    print(res)
    res = sqlHelp.update("delete from article where id=%s", {2})
    print(res)

查询与分页实现

import pymysql

# 创建一个连接访问数据库的工具类
class MysqlHelp(object):

    def get_by_id(self, sql, id):
        try:
            self.open_conn()
            self.cursor.execute(sql, id)
            # 如果是查询则需要使用fetchone fetchall方法
            return self.cursor.fetchone()
        except Exception as error:
            print(error)
        finally:
            self.close()

    # 根据某个字段进行模糊查询
    def query_by_name(self, sql, name):
        try:
            self.open_conn()
            self.cursor.execute(sql, name)
            # 如果是查询则需要使用fetchone fetchall方法
            return self.cursor.fetchall()
        except Exception as error:
            print(error)
        finally:
            self.close()

    def query_split_page(self, sql, keyword, currentPage=1, size=5):
        try:
            self.open_conn()
            self.cursor.execute(sql, (f'%{keyword}%', (currentPage - 1) * size, size))
            # 如果是查询则需要使用fetchone fetchall方法
            return self.cursor.fetchall()
        except Exception as error:
            print(error)
        finally:
            self.close()


if __name__ == "__main__":
    sqlHelp = MysqlHelp("127.0.0.1", "test", "root", "root")
    print(sqlHelp.get_db_version("select version()"))
    res = sqlHelp.get_by_id(sql="select * from article where id=%s", id=1)
    print(res)
    res = sqlHelp.query_by_name(sql="select * from article where title like %s", name='%%')
    print(res)
    res = sqlHelp.query_split_page(sql="select * from article where title like %s limit %s,%s", keyword='',currentPage=2,size=3)
    print(res)

在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值