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

yizhihongxing

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日

相关文章

  • mysql 触发器 trigger用法 three (稍微复杂的)

    MySQL包含对触发器的支持。触发器是一种与表操作有关的数据库对象,当触发器所在表上出现指定事件时,将调用该对象,即表的操作事件触发表上的触发器的执行。 创建触发器 在MySQL中,创建触发器语法如下: CREATE TRIGGER trigger_name trigger_time trigger_event ON tbl_name FOR EACH RO…

    MySQL 2023年4月13日
    00
  • Mysql按条件计数多种实现方法详解

    Mysql按条件计数多种实现方法详解 在MySQL中计算数据的数量是一项常见的任务,会在实际应用开发中频繁出现。本文将介绍Mysql按条件计数的多种实现方法,以帮助开发者更好地处理数据。 1. 基础语法 Mysql中计算数据数量所用的语法为COUNT,该语法可用于统计整个表中的记录数量,也可以统计符合某个条件的记录数量。 示例如下: — 统计表中所有记录数…

    database 2023年5月22日
    00
  • JS+php后台实现文件上传功能详解

    下面我来给您详细讲解一下“JS+php后台实现文件上传功能”的完整攻略。 一、介绍 在web开发中,通常需要实现文件上传功能。本文将介绍如何使用JS和php后台实现文件上传功能,并提供两个示例。 二、JS文件上传 文件上传的第一步是使用JS实现前端文件上传,主要步骤如下: 创建一个表单,使用input标签的type为file,以允许用户选择上传的文件。 &l…

    database 2023年5月22日
    00
  • Mybatis执行多条语句/批量更新方式

    Mybatis是一款优秀的ORM框架,提供了多种方式执行SQL语句。当需要批量执行多条SQL语句或进行批量更新时,Mybatis提供了两种方式:batch和foreach。 1. Batch方式 Batch方式是将多条SQL语句打包成一条批量执行。在Mybatis中,一般使用SqlSession的Batch()方法来进行批量更新。 示例代码如下: try (…

    database 2023年5月18日
    00
  • mysql如何实现多行查询结果合并成一行

    要实现多行查询结果合并成一行,可以使用MySQL的GROUP_CONCAT函数来完成。GROUP_CONCAT函数将多行相同列的值合并成单行,并用逗号(或其他指定的分隔符)分隔每个值。 下面是实现多行查询结果合并成一行的步骤: 使用SELECT语句查询需要合并的数据,注意需要聚合函数(如SUM、COUNT、AVG等)对数据进行分组。 例如,我们有一个orde…

    database 2023年5月22日
    00
  • 一次数据库查询超时优化问题的实战记录

    笔者通过实战记录整理出一次数据库查询超时优化的完整攻略,具体包括以下步骤: 步骤一:排查慢查询 1.1 排查当前数据库中是否有慢查询,可以参考以下SQL语句: SELECT * FROM `performance_schema`.`events_statements_summary_by_digest` WHERE SCHEMA_NAME=’your_db_…

    database 2023年5月19日
    00
  • 为什么Redis集群有16384个槽

    引言 我在《那些年用过的Redis集群架构(含面试解析)》一文里提到过,现在redis集群架构,redis cluster用的会比较多。如下图所示对于客户端请求的key,根据公式HASH_SLOT=CRC16(key) mod 16384,计算出映射到哪个分片上,然后Redis会去相应的节点进行操作! 那大家思考过,为什么有16384个槽么?ps:CRC16…

    Redis 2023年4月11日
    00
  • Oracle数据库rownum和row_number的不同点

    Oracle数据库rownum和row_number的不同点 在Oracle数据库中,我们常常会用到rownum和row_number这两个关键字来操作行数据。它们虽然都可以用来对查询结果的行数进行限制,但它们有着不同的用法和功效。本文将详细讲解这两个关键字的区别,并结合实例进行说明。 rownum rownum是Oracle数据库中内置的一个伪列,它在查询…

    database 2023年5月21日
    00
合作推广
合作推广
分享本页
返回顶部