【Python】2022Python连接MySQL数据库之CRUD操作完整版(一看就懂,上手特别快)

一、简介

1、概括

目前而言,一般都用python3.x版本,所以连接MySQL数据库,我的建议是使用PyMySQL库,非常的好用。如果是Python2的版本,就使用mysqldb。当然我主要使用PyMySQL库,主要参考的代码也是官网上的,然后我再自己整合修改。

2、pymysql的安装

pip3 install PyMySQL

不管安装如何,网上也有博主解释的很详细了,具体的我就不细说了,主要说CRUD操作及代码实现。

二、具体代码

1、导入模块

# 导入pymysql模块
import pymysql

2、创建连接mysql的类

# 创建连接mysql的类
class TestMysql:
    # 初始化变量
    def __init__(self, username, host, port, password, database):
        self.username = username
        self.host = host
        self.port = port
        self.password = password
        self.database = database

    # 创建数据库连接
    def connect_mysql(self):
        connect = pymysql.connect(user=self.username, host=self.host, port=self.port, passwd=self.password,
                                  database=self.database)
        return connect

3、再创建一个类来承载CRUD操作

class TestFind:
    def __init__(self, db):
        self.db = db

4、查询数据库的版本

# 查询数据库的版本
    def find_version(self, db):
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()

        # 使用 execute()  方法执行 SQL 查询
        cursor.execute("SELECT VERSION()")

        # 使用 fetchone() 方法获取单条数据.
        data = cursor.fetchone()

        print("Database version : %s " % data)

5、新增操作

 # 新增数据表
    def create_user(self, db):
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()

        # 使用 execute() 方法执行 SQL,如果表存在则删除
        cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

        # 使用预处理语句创建表
        sql = """CREATE TABLE EMPLOYEE (
                 FIRST_NAME  CHAR(20) NOT NULL,
                 LAST_NAME  CHAR(20),
                 AGE INT,  
                 SEX CHAR(1),
                 INCOME FLOAT )"""

        cursor.execute(sql)

        print("新增成功!!!!")

6、插入操作

# 数据库的插入操作
    def insert_mysql(self, db):
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()

        # SQL 插入语句
        sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
                 LAST_NAME, AGE, SEX, INCOME)
                 VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
        try:
            # 执行sql语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            # 如果发生错误则回滚
            db.rollback()

        print("插入成功!!!!")

7、更新操作

 # 数据库更新操作
    def update_mysql(self, db):
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()

        # SQL 更新语句
        sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            # 发生错误时回滚
            db.rollback()
        print("更新成功!!!")

8、删除操作

# 数据库删除操作
    def delete_data(self, db):
        # 使用cursor() 方法获取操作游标
        cursor = db.cursor()

        # SQL删除语句
        sql = "Delete from employee where AGE>%s" % (20)

        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 提交修改
            db.commit()
        except:
            # 发生错误时回滚
            db.rollback()

        print("删除成功!!!")

9、关闭数据库

 # 关闭数据库的提示信息
    def close_mysql(self, db):
        # 关闭数据库连接
        db.close()
        print("MySQL connection closed.")

10、创建主函数

if __name__ == "__main__":
    # 定义变量
    username = 'root'
    host = 'localhost'
    port = 3306
    password = '自己的数据库密码'
    database = '数据库名称'

    try:
        mysql = TestMysql(username, host, port, password, database)
        duixiang = TestFind(mysql)
        db = mysql.connect_mysql()
        print("MySQL connection finished.")
        duixiang.find_version(db)
        duixiang.create_user(db)
        duixiang.insert_mysql(db)
        duixiang.update_mysql(db)
        duixiang.delete_data(db)
        duixiang.close_mysql(db)
    except Exception as e:
        print("Error connecting to MySQL: " + str(e))
    #except pymysql.err.OperationalError as e:
       #print("连接意外断开、 数据库名未找到: " + str(e))

三、完整代码

# 导入pymysql模块
import pymysql


# 创建连接MYSQL的类
class TestMysql:
    # 初始化变量
    def __init__(self, username, host, port, password, database):
        self.username = username
        self.host = host
        self.port = port
        self.password = password
        self.database = database

    # 创建数据库连接
    def connect_mysql(self):
        connect = pymysql.connect(user=self.username, host=self.host, port=self.port, passwd=self.password,
                                  database=self.database)
        return connect


class TestFind:
    def __init__(self, db):
        self.db = db

    # 查询数据库的版本
    def find_version(self, db):
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()

        # 使用 execute()  方法执行 SQL 查询
        cursor.execute("SELECT VERSION()")

        # 使用 fetchone() 方法获取单条数据.
        data = cursor.fetchone()

        print("Database version : %s " % data)

    # 新增数据表
    def create_user(self, db):
        # 使用 cursor() 方法创建一个游标对象 cursor
        cursor = db.cursor()

        # 使用 execute() 方法执行 SQL,如果表存在则删除
        cursor.execute("DROP TABLE IF EXISTS EMPLOYEE")

        # 使用预处理语句创建表
        sql = """CREATE TABLE EMPLOYEE (
                 FIRST_NAME  CHAR(20) NOT NULL,
                 LAST_NAME  CHAR(20),
                 AGE INT,  
                 SEX CHAR(1),
                 INCOME FLOAT )"""

        cursor.execute(sql)

        print("新增成功!!!!")

    # 数据库的插入操作
    def insert_mysql(self, db):
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()

        # SQL 插入语句
        sql = """INSERT INTO EMPLOYEE(FIRST_NAME,
                 LAST_NAME, AGE, SEX, INCOME)
                 VALUES ('Mac', 'Mohan', 20, 'M', 2000)"""
        try:
            # 执行sql语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            # 如果发生错误则回滚
            db.rollback()

        print("插入成功!!!!")

    # 数据库更新操作
    def update_mysql(self, db):
        # 使用cursor()方法获取操作游标
        cursor = db.cursor()

        # SQL 更新语句
        sql = "UPDATE EMPLOYEE SET AGE = AGE + 1 WHERE SEX = '%c'" % ('M')
        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 提交到数据库执行
            db.commit()
        except:
            # 发生错误时回滚
            db.rollback()
        print("更新成功!!!")

    # 数据库删除操作
    def delete_data(self, db):
        # 使用cursor() 方法获取操作游标
        cursor = db.cursor()

        # SQL删除语句
        sql = "Delete from employee where AGE>%s" % (20)

        try:
            # 执行SQL语句
            cursor.execute(sql)
            # 提交修改
            db.commit()
        except:
            # 发生错误时回滚
            db.rollback()

        print("删除成功!!!")

    # 关闭数据库的提示信息
    def close_mysql(self, db):
        # 关闭数据库连接
        db.close()
        print("MySQL connection closed.")


if __name__ == "__main__":
    # 定义变量
    username = 'root'
    host = 'localhost'
    port = 3306
    password = '自己的数据库密码'
    database = '数据库名称'

    try:
        mysql = TestMysql(username, host, port, password, database)
        duixiang = TestFind(mysql)
        db = mysql.connect_mysql()
        print("MySQL connection finished.")
        duixiang.find_version(db)
        duixiang.create_user(db)
        duixiang.insert_mysql(db)
        duixiang.update_mysql(db)
        duixiang.delete_data(db)
        duixiang.close_mysql(db)
    except Exception as e:
        print("Error connecting to MySQL: " + str(e))
    except pymysql.err.OperationalError as e:
        print("连接意外断开、 数据库名未找到: " + str(e))

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

熊凯瑞

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值