零基础学Python之整合MySQL

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

不同的数据库你需要下载不同的DB API模块,例如你需要访问Oracle数据库和Mysql数据,你需要下载Oracle和MySQL数据库模块。

DB-API 是一个规范. 它定义了一系列必须的对象和数据库存取方式, 以便为各种各样的底层数据库系统和多种多样的数据库接口程序提供一致的访问接口 。

Python的DB-API,为大多数的数据库实现了接口,使用它连接各数据库后,就可以用相同的方式操作各数据库。

Python DB-API使用流程:

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

Python中操作MySQL数据库有多种方法,例如使用mysql-connector-python、PyMySQL、mysqlclient等库。本文将以PyMySQL为例,介绍如何在Python中使用PyMySQL库进行MySQL数据库操作。

在Python中使用PyMySQL库进行MySQL数据库操作,需要先安装PyMySQL库。可以使用pip命令在命令行中安装PyMySQL库。

bash 复制代码
pip install pymysql

1.连接MySQL数据库

使用 connect() 方法连接到MySQL数据库。需要提供主机名、用户名、密码和数据库名。

python 复制代码
import pymysql

connection = pymysql.connect(
            host="47.93.159.97",
            port=3306,
            user="root",
            password="mysql8test.",
            db="user",
            charset="utf8mb4"
        )

2.SQL语句执行

使用 execute() 方法执行对应的SQL语句。

python 复制代码
import pymysql

# 获取到connection对象之后,编写sql调用execute()方法。
cursor = connection.cursor()
sql = "增删改查sql语句"
# 参数
date = ("元组类型",)
# 执行SQL
affect_row = cursor.execute(sql,date)

3.Python操作MySQL案例

了解完 connect()execute() 下面我们直接来一个案例演示下Python操作MySQL的增删改查。

需求:编写一个程序,操作数据库需要对人员进行增删改查。

(1)准备数据库表格user表

sql 复制代码
-- `user`.`user` definition

CREATE TABLE `user` (
  `id` bigint NOT NULL AUTO_INCREMENT COMMENT '主键ID',
  `name` varchar(100) DEFAULT NULL COMMENT '姓名',
  `age` varchar(100) DEFAULT NULL COMMENT '年龄',
  `sex` varchar(100) DEFAULT NULL COMMENT '性别',
  `address` varchar(100) DEFAULT NULL COMMENT '地址',
  `career` varchar(100) DEFAULT NULL COMMENT '职业',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2 DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

(2)封装数据库的工具类

python 复制代码
import pymysql

'''
数据库操作工具类
'''

class DBUtil:

    # 创建连接对象
    @staticmethod
    def get_connection():
        connection = pymysql.connect(
            host="ip地址",
            port=3306,
            user="user",
            password="password",
            db="user",
            charset="utf8mb4"
        )
        return connection

    # 关闭连接对象
    @staticmethod
    def close(connection, cursor):
        # 更改提交
        connection.commit()
        # 关闭游标对象
        cursor.close()
        # 关闭连接对象
        connection.close()

(3)数据库增删改查方法编写

python 复制代码
from DBUtil import DBUtil

class UserDao:

    @staticmethod
    def __addUser__(name, age, sex, address, career):
        connection = DBUtil.get_connection()
        cursor = connection.cursor()
        sql = "insert into user (name,age,sex,address,career) values (%s,%s,%s,%s,%s)"
        data = [(name,age,sex,address,career)]
        affect_row = cursor.executemany(sql,data)
        print("受影响的行数:",affect_row)
        if affect_row > 0:
            print("添加成功")
        else:
            print("添加失败")
        DBUtil.close(connection,cursor)

    @staticmethod
    def __updateUser__(user_id, name, age, sex, address, career):
        connection = DBUtil.get_connection()
        cursor = connection.cursor()
        sql = "update user set name = %s,age = %s,sex=%s,address=%s,career=%s where id = %s"
        date = (name,age,sex,address,career,user_id)
        affect_row = cursor.execute(sql,date)
        if affect_row > 0:
            print("修改成功")
        else:
            print("修改失败,当前人员不存在")
        DBUtil.close(connection,cursor)

    @staticmethod
    def __deleteUser__(user_id):
        connection = DBUtil.get_connection()
        cursor = connection.cursor()
        sql = "delete from user where id =%s"
        affect_row = cursor.execute(sql, (user_id,))
        if affect_row > 0:
            print("删除成功")
        else:
            print("删除失败,当前人员不存在")
        DBUtil.close(connection, cursor)

    @staticmethod
    def __selectUsers__():
        connection = DBUtil.get_connection()
        cursor = connection.cursor()
        sql = "select * from user"
        cursor.execute(sql)
        rows = cursor.fetchall()
        for row in rows:
            print("编号:",row[0],"姓名:",row[1],"年龄:",row[2],"性别:",row[3],"地址:",row[4],"职业:",row[5])
        DBUtil.close(connection,cursor)

(4)主程序入口编写

python 复制代码
from UserDao import UserDao

def main():
    # 入口
    while True:
        print("[1]增加用户信息")
        print("[2]删除用户信息")
        print("[3]修改用户信息")
        print("[4]查询用户信息")
        print("[5]退出系统")
        choose = int(input("请输入你要执行的选项:"))
        if choose == 1:
            name = input("姓名:")
            age = input("年龄:")
            sex = input("性别:")
            address = input("地址:")
            career = input("职业:")
            UserDao.__addUser__(name, age, sex, address, career)
        elif choose == 2:
            user_id = input("用户ID:")
            UserDao.__deleteUser__(user_id)
        elif choose == 3:
            user_id = input("用户ID:")
            name = input("姓名:")
            age = input("年龄:")
            sex = input("性别:")
            address = input("地址:")
            career = input("职业:")
            UserDao.__updateUser__(user_id, name, age, sex, address, career)
        elif choose == 4:
            UserDao.__selectUsers__()
        else:
            print("退出系统")
            break

if __name__ == "__main__":
    main()

运行效果:


相关推荐
丁浩6662 分钟前
Python机器学习---2.算法:逻辑回归
python·算法·机器学习
-雷阵雨-23 分钟前
MySQL——桥梁JDBC
数据库·mysql·oracle
B站_计算机毕业设计之家25 分钟前
计算机毕业设计:Python农业数据可视化分析系统 气象数据 农业生产 粮食数据 播种数据 爬虫 Django框架 天气数据 降水量(源码+文档)✅
大数据·爬虫·python·机器学习·信息可视化·课程设计·农业
Q_Q51100828537 分钟前
python+uniapp基于微信小程序的旅游信息系统
spring boot·python·微信小程序·django·flask·uni-app·node.js
鄃鳕40 分钟前
python迭代器解包【python】
开发语言·python
懷淰メ1 小时前
python3GUI--模仿百度网盘的本地文件管理器 By:PyQt5(详细分享)
开发语言·python·pyqt·文件管理·百度云·百度网盘·ui设计
Q_Q5110082851 小时前
python基于web的汽车班车车票管理系统/火车票预订系统/高铁预定系统 可在线选座
spring boot·python·django·flask·node.js·汽车·php
新子y1 小时前
【小白笔记】普通二叉树(General Binary Tree)和二叉搜索树的最近公共祖先(LCA)
开发语言·笔记·python
囚生CY2 小时前
【速写】优化的深度与广度(Adam & Moun)
人工智能·python·算法
Query*2 小时前
Java 设计模式——工厂模式:从原理到实战的系统指南
java·python·设计模式