Python MySQL数据库基本操作及项目示例详解

Python MySQL数据库基本操作及项目示例详解

本文将为您介绍 Python 语言中如何操作 MySQL 数据库,包括连接数据库、创建表、插入数据、修改数据、删除数据以及查询数据等基本操作,最后还将提供两个项目示例,分别是购物车系统和学生信息管理系统。

一、连接数据库

Python 连接 MySQL 数据库的方式有多种,其中最常见的方式是使用 pymysql 模块。

import pymysql

# 打开数据库连接
db = pymysql.connect(
    host="localhost",    # 数据库所在主机地址
    user="root",         # 数据库用户名
    password="123456",   # 数据库密码
    database="test",     # 数据库名称
    charset="utf8"       # 指定编码方式
)

# 关闭数据库连接
db.close()

二、创建表

在 MySQL 数据库中创建表需要使用到 SQL 语句,Python 使用 execute() 方法执行 SQL 语句。

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 使用 execute() 方法执行 SQL 语句
cursor.execute("""
    CREATE TABLE `students` (
        `id` INT(11) NOT NULL AUTO_INCREMENT,
        `name` VARCHAR(20) NOT NULL,
        `age` INT(11) NOT NULL,
        `sex` VARCHAR(10),
        PRIMARY KEY (`id`)
    ) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
""")

# 关闭游标
cursor.close()

三、插入数据

插入数据也需要使用到 SQL 语句,Python 使用 execute() 方法执行 SQL 语句。另外,MySQL 数据库中插入数据的方式有两种,分别是使用 VALUES 子句和使用 SET 子句。

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 插入数据(使用 VALUES 子句)
sql = """
    INSERT INTO `students`(`name`, `age`, `sex`) 
    VALUES(%s, %s, %s)
"""
cursor.execute(sql, ("张三", 18, "男"))

# 插入数据(使用 SET 子句)
sql = """
    INSERT INTO `students` SET `name`=%s, `age`=%s, `sex`=%s
"""
cursor.execute(sql, ("李四", 20, "女"))

# 提交事务
db.commit()

# 关闭游标
cursor.close()

四、修改数据

修改数据也需要使用到 SQL 语句,Python 使用 execute() 方法执行 SQL 语句。

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 修改数据
sql = """
    UPDATE `students` SET `name`=%s, `age`=%s, `sex`=%s WHERE `id`=%s
"""
cursor.execute(sql, ("张三三", 19, "女", 1))

# 提交事务
db.commit()

# 关闭游标
cursor.close()

五、删除数据

删除数据同样需要使用到 SQL 语句,Python 使用 execute() 方法执行 SQL 语句。

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 删除数据
sql = """
    DELETE FROM `students` WHERE `id`=%s
"""
cursor.execute(sql, (1,))

# 提交事务
db.commit()

# 关闭游标
cursor.close()

六、查询数据

查询数据需要使用到 SQL 语句,Python 使用 execute() 方法执行 SQL 语句,然后使用 fetchall() 方法获取结果集。

# 使用 cursor() 方法创建一个游标对象 cursor
cursor = db.cursor()

# 查询数据
sql = """
    SELECT * FROM `students`
"""
cursor.execute(sql)
results = cursor.fetchall()

# 输出结果
for row in results:
    print(row)

# 关闭游标
cursor.close()

七、购物车系统示例

以下示例是一个简单的购物车系统,用户可根据自己的需求增加商品、删除商品、修改商品、查询商品等操作。

# 商品列表(字典类型)
items = {
    "001": {"name": "电视机", "price": 2000},
    "002": {"name": "洗衣机", "price": 1000},
    "003": {"name": "冰箱", "price": 3000},
}

# 购物车列表(列表类型)
cart = []

while True:
    # 菜单
    print("1. 商品列表")
    print("2. 查看购物车")
    print("3. 添加商品")
    print("4. 删除商品")
    print("5. 修改商品")
    print("6. 结算")
    print("0. 退出")

    # 用户输入
    choice = input("请选择操作:")

    if choice == "1":
        # 商品列表
        for k, v in items.items():
            print(k, v["name"], v["price"])
    elif choice == "2":
        # 查看购物车
        if cart:
            for p in cart:
                print(p["name"], p["price"])
        else:
            print("购物车为空")
    elif choice == "3":
        # 添加商品
        item_id = input("请输入商品编号:")
        if item_id in items:
            item = items[item_id]
            cart.append({"id": item_id, "name": item["name"], "price": item["price"]})
            print("添加成功")
        else:
            print("商品不存在")
    elif choice == "4":
        # 删除商品
        item_id = input("请输入商品编号:")
        for p in cart:
            if p["id"] == item_id:
                cart.remove(p)
                print("删除成功")
                break
        else:
            print("商品不存在")
    elif choice == "5":
        # 修改商品
        item_id = input("请输入商品编号:")
        for p in cart:
            if p["id"] == item_id:
                p["name"] = input("请输入商品名称:")
                p["price"] = int(input("请输入商品单价:"))
                print("修改成功")
                break
        else:
            print("商品不存在")
    elif choice == "6":
        # 结算
        total_price = 0
        for p in cart:
            total_price += p["price"]
        print("总价为:", total_price)
        cart.clear()
    elif choice == "0":
        # 退出
        break
    else:
        print("输入不合法")

八、学生信息管理系统示例

以下示例是一个简单的学生信息管理系统,管理员可根据自己的需要增加学生、删除学生、修改学生信息、查询学生信息等操作。

# 学生列表(列表类型)
students = []

while True:
    # 菜单
    print("1. 查看学生列表")
    print("2. 添加学生")
    print("3. 删除学生")
    print("4. 修改学生信息")
    print("5. 查询学生信息")
    print("0. 退出")

    # 用户输入
    choice = input("请选择操作:")

    if choice == "1":
        # 查看学生列表
        if students:
            for s in students:
                print(s["id"], s["name"], s["age"], s["sex"])
        else:
            print("学生列表为空")
    elif choice == "2":
        # 添加学生
        name = input("请输入姓名:")
        age = int(input("请输入年龄:"))
        sex = input("请输入性别:")
        students.append({"id": len(students)+1, "name": name, "age": age, "sex": sex})
        print("添加成功")
    elif choice == "3":
        # 删除学生
        student_id = int(input("请输入学生编号:"))
        for s in students:
            if s["id"] == student_id:
                students.remove(s)
                print("删除成功")
                break
        else:
            print("学生不存在")
    elif choice == "4":
        # 修改学生信息
        student_id = int(input("请输入学生编号:"))
        for s in students:
            if s["id"] == student_id:
                s["name"] = input("请输入姓名:")
                s["age"] = int(input("请输入年龄:"))
                s["sex"] = input("请输入性别:")
                print("修改成功")
                break
        else:
            print("学生不存在")
    elif choice == "5":
        # 查询学生信息
        student_id = int(input("请输入学生编号:"))
        for s in students:
            if s["id"] == student_id:
                print(s["id"], s["name"], s["age"], s["sex"])
                break
        else:
            print("学生不存在")
    elif choice == "0":
        # 退出
        break
    else:
        print("输入不合法")

以上就是 Python MySQL 数据库基本操作及项目示例详解,希望能对大家有所帮助。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python MySQL数据库基本操作及项目示例详解 - Python技术站

(0)
上一篇 2023年5月21日
下一篇 2023年5月21日

相关文章

  • 数据仓库的特点和功能

    下面是数据仓库的特点和功能的完整攻略。 数据仓库的特点 数据集中:数据仓库是将企业内部各种分散的数据集中存储于一个特定的数据库中。这样做既方便管理、维护,也使得数据易于查询和分析。 面向主题:数据仓库以主题为基本构成单位,这是与传统的事务处理系统和关系数据库最明显的不同之处。在数据仓库中,同一主题的数据要集中存放,便于查询和处理。 面向历史:数据仓库一般不仅…

    database 2023年3月27日
    00
  • SQL中视图和游标的区别

    SQL语言中,视图(View)和游标(Cursor)是两个非常重要的概念,它们都是用来处理数据库中数据的。视图是一个虚拟表,它是基于一个或多个表的查询结果组成的,而游标则是一种用来遍历数据的对象。虽然它们都是用来处理数据的,但是在实际应用中,它们有着很大的不同之处。下面我们将详细讲解视图和游标的区别。 视图 什么是视图 视图是SQL语言中的一种对象,它相对于…

    database 2023年3月27日
    00
  • Spring Boot 项目集成Redis的方式详解

    下面是Spring Boot 整合Redis的完整攻略: 准备工作 在开始配置之前,我们需要完成几个基本的准备工作。 添加Redis依赖 使用Spring Boot集成Redis需要在pom.xml中添加spring-boot-starter-data-redis依赖,建议使用最新版本。 <dependency> <groupId>o…

    database 2023年5月22日
    00
  • Spark在Windows下的环境搭建方法

    Spark在Windows下的环境搭建方法 1. 安装Java 安装Spark之前需要先安装Java环境,可以在官网上下载并安装最新版的Java。安装完成后,在命令行中输入以下命令,检查是否安装成功: java -version 2. 安装Hadoop Spark需要依赖Hadoop,因此需要先安装Hadoop。可以在官网上下载最新版的Hadoop二进制文件…

    database 2023年5月22日
    00
  • 浅谈MySQL timestamp(3)问题

    浅谈MySQL timestamp(3)问题 什么是MySQL timestamp(3) MySQL的数据类型中有一个timestamp类型,在MySQL中,timestamp(3)表示精确到毫秒级别的时间戳,具体的格式为”2022-01-01 12:34:56.789″。 timestamp(3)与timestamp的区别 timestamp(3)与tim…

    database 2023年5月21日
    00
  • php防止SQL注入详解及防范

    PHP防止SQL注入详解及防范 什么是SQL注入 SQL注入是指攻击者通过银行构造恶意的SQL语句,从而控制数据库执行恶意的操作。攻击者可以通过修改SQL语句,访问或修改用户的敏感信息。 SQL注入攻击方式 1. 用户名和密码的攻击方式 $username = $_POST[‘username’]; $password = $_POST[‘password’…

    database 2023年5月21日
    00
  • sqlserver2005自动创建数据表和自动添加某个字段索引

    对于SQL Server 2005自动创建数据表和自动添加某个字段索引,我们需要注意以下三个方面: 数据库设计 建表语句 添加索引 接下来我会分别对这三个方面进行详细讲解。 1. 数据库设计 在设计数据库时,需要合理规划表之间的关系和字段的类型及长度。此外,还需要考虑字段是否需要添加索引。 例如,我们设计一个学生成绩管理系统,其中有学生表和成绩表,它们的关系…

    database 2023年5月21日
    00
  • redis的分布式锁工具LockUtil

    /** * 基于redis的分布式锁工具 * * @author yuyufeng * */ public class LockUtil { // 获取redis static JedisPool jedisPool; static { JedisPoolConfig config = new JedisPoolConfig(); config.setMax…

    Redis 2023年4月16日
    00
合作推广
合作推广
分享本页
返回顶部