Python编程及项目开发课件 第6章 Python数据库及文件系统_第1页
Python编程及项目开发课件 第6章 Python数据库及文件系统_第2页
Python编程及项目开发课件 第6章 Python数据库及文件系统_第3页
Python编程及项目开发课件 第6章 Python数据库及文件系统_第4页
Python编程及项目开发课件 第6章 Python数据库及文件系统_第5页
已阅读5页,还剩55页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Python数据库及文件系统从基础到实战的完整指南目录01.数据库技术基础DatabaseTechnologyBasics02.MySQL数据库详解MySQLDatabaseDetailedExplanation03.SQL语句核心操作CoreSQLOperations04.Python操作MySQL数据库PythonMySQLOperations05.Python文件系统操作PythonFileSystemOperations06.综合项目实战ComprehensiveProjectPractice01数据库技术基础了解数据库的基本概念、关系模型及开发流程数据库基本概念数据库(DB)长期存储在计算机内的、有组织的、统一管理的相关数据的集合。它是数据的仓库。数据库管理系统(DBMS)位于用户与操作系统之间的数据管理软件,用于定义、操作、管理和维护数据库。例如MySQL、Oracle。数据库系统(DBS)由数据库、数据库管理系统、应用程序和数据库管理员(DBA)共同组成的完整系统。关系数据库核心概念:二维表模型关系数据库是建立在“关系模型”基础上的主流数据库类型。其核心思想是利用我们熟悉的“二维表”来组织数据。无论是学生、商品还是订单,都可以抽象为行与列的结构:每一行代表一条完整的“记录”每一列代表一个属性“字段”示例:学生基本信息表学号姓名性别年龄班级20240101王鹏男18计240120240102陈红芳女19计240120240201何春玲女19计240220240202李晓峰男18计2402关系数据库基本术语数据表(Table)存储数据的二维表格,是数据库的基本组成单位。记录(Record)&字段(Field)行代表实体完整信息(记录),列代表实体属性(字段)。主键(PK)&外键(FK)主键唯一标识记录,外键用于关联不同数据表。索引(Index)特殊的数据结构,如同目录,用于加速数据的查询速度。数据库应用系统开发步骤01需求分析明确系统要解决的问题与核心功能,奠定开发基础。02软件设计进行总体架构与详细设计,确定数据库结构与算法逻辑。03编写程序依据设计文档,使用编程语言(如Python)实现具体功能。04测试优化全面测试系统功能,修复Bug并优化性能,确保稳定性。05发行维护部署至生产环境,持续监控运行状态并进行迭代升级。02MySQL数据库详解学习MySQL的安装、图形化工具Navicat的使用及数据类型。MySQL简介MySQL是一款开源的关系型数据库管理系统,由瑞典MySQLAB公司开发,现属Oracle旗下。它以高性能、高可靠性和易用性著称。开源免费,成本低社区版完全免费,大幅降低企业开发与维护成本。性能卓越,响应快体积小、速度快,能够轻松应对大多数中小型应用的高并发需求。易于使用,社区强拥有完善的官方文档和活跃的全球社区,学习与排障资源丰富。应用广泛,架构核心LAMP/LNMP经典Web架构的核心组件,互联网行业标准配置。MySQL安装步骤(1)下载安装包访问MySQL官方网站下载对应操作系统的安装包。推荐下载MSI格式文件,安装过程更简便。启动安装向导双击运行MSI文件,在安装类型选择界面推荐选择“DeveloperDefault”(开发者默认),该选项将自动安装开发所需的大部分组件。MySQL安装步骤(2)选择安装路径安装程序会自动检查并提示安装缺失的依赖。随后进入路径配置界面,建议将程序安装在非系统盘(如D盘),以节省C盘空间并提升性能。确认配置确认安装目录和数据存储目录无误后,点击“Next”按钮,进入下一步的服务器详细配置环节。MySQL安装步骤(3)网络配置(TypeandNetworking)保持默认设置即可。默认通信协议为TCP/IP,端口号3306是MySQL的标准端口,无需修改。设置管理员密码(AccountsandRoles)关键步骤:为root用户(超级管理员)设置安全密码,请务必牢记。也可在此处创建其他用户并分配权限。MySQL环境变量配置01.定位MySQL安装目录进入MySQL安装路径,找到bin文件夹。复制其完整路径,例如:C:\ProgramFiles\MySQL\MySQLServer8.0\bin02.打开系统环境变量设置右键“此电脑”→“属性”→“高级系统设置”→“环境变量”,打开系统变量配置面板。03.添加路径到Path变量在“系统变量”中找到Path,双击编辑,点击“新建”,粘贴刚才复制的bin目录路径。04.验证配置是否生效打开新的CMD窗口,输入mysql--version。若显示版本号,则配置成功。NavicatforMySQL简介直观的图形界面可视化展示数据库和表结构,操作逻辑清晰,一目了然,降低上手门槛。强大的全栈功能支持表设计、增删改查、SQL编写执行及数据导入导出,覆盖数据库管理全流程。全平台覆盖支持完美适配Windows、macOS和Linux系统,满足不同开发环境的需求。Navicat-新建连接1.点击“连接”按钮打开Navicat,点击左上角“连接”,选择“MySQL”数据库类型。2.填写关键连接信息连接名:自定义名称(如“本地MySQL”)主机/IP:本地数据库填写“localhost”端口:默认3306;用户名:root;密码:安装时设置的密码3.测试并保存连接点击“测试连接”,提示“连接成功”后点击“确定”保存。Navicat-创建数据库右键连接名在左侧连接列表中,右键点击已创建的连接(如“本地MySQL”)。选择“新建数据库”在弹出的上下文菜单中,选择“新建数据库”选项。配置数据库信息输入名称(如student_management),字符集强烈建议选择utf8mb4,以支持Emoji等扩展字符。确认创建点击“确定”按钮,完成数据库的创建。Navicat-创建数据表01打开数据库双击创建好的数据库连接,展开数据库列表。02新建表结构右键点击“表”选项,选择“新建表”进入设计器。03定义字段属性设置列名、类型(INT/VARCHAR)、主键及自增属性。04保存数据表按Ctrl+S,输入表名(如students)并确认保存。Navicat-修改表结构1.选择并进入设计模式在左侧列表找到目标表,右键点击并选择“设计表”,即可打开表设计器进行编辑。2.灵活调整字段属性添加/删除:直接输入新字段或选中行删除属性修改:编辑字段名称、类型、长度等参数3.保存更改修改完成后,按快捷键Ctrl+S快速保存所有更改。Navicat-编辑表数据打开数据视图双击数据表名,即可打开表格形式的数据编辑视图,直观展示所有记录。添加数据在最后一行单元格按向下箭头键创建新行,直接输入数据即可完成添加。修改数据直接在目标单元格中修改内容,点击其他行或按Enter键即可确认修改。删除数据右键点击要删除的行,在弹出菜单中选择“删除”并确认,即可移除记录。Navicat-执行SQL语句1.新建查询点击顶部菜单栏“查询”→“新建查询”,开启编辑器窗口。2.编写SQL语句利用语法高亮和自动补全功能,在编辑器中输入所需SQL逻辑。3.执行SQL点击工具栏“运行”按钮或按F5快捷键,执行编写好的脚本。4.查看结果查询结果将显示在下方窗口,DML操作会返回受影响的行数。MySQL数据类型-数值类型整型数据类型(IntegerTypes)数据类型取值范围说明存储单位TINYINT-127~127最小的整数1字节SMALLINT-32768~32767小型整数2字节MEDIUMINT-8388608~8388607中型整数3字节INT-2147483648~2147483647标准整数4字节BIGINT-9e18~9e18大型整数8字节浮点型数据类型(FloatingPointTypes)数据类型取值范围说明存储单位FLOAT±3.402823466E+38单精度浮点数4字节DOUBLE±1.7976931348623157E+308双精度浮点数8字节DECIMAL(M,D)可变(M:总位数,D:小数位)定点数,精确存储自定义长度MySQL数据类型-字符串类型类型名称取值范围主要说明与特性CHAR(M)0~M个字符固定长度,查询速度快,但可能浪费存储空间。VARCHAR(M)0~M个字符可变长度,根据实际内容存储,节省空间,常用首选。TEXT0~65535字符长文本类型,适合存储大量文字内容(如文章、描述)。BLOB0~65535字节二进制大对象,适合存储图片、文件等二进制数据。ENUM枚举类型字段值只能是预定义枚举列表中的其中一个值。SET集合类型字段值可以是集合列表中的零个或多个值的组合。MySQL数据类型-日期和时间类型类型取值范围格式说明DATE1000-01-01至9999-12-31YYYY-MM-DD仅存储日期TIME-838:59:59至838:59:59HH:MM:SS仅存储时间DATETIME1000-01-01至9999-12-31YYYY-MM-DDHH:MM:SS存储日期和时间TIMESTAMP1970-01-01至2038-01-19YYYY-MM-DDHH:MM:SS范围较小,可自动更新YEAR1901至2155YYYY或YY仅存储年份03SQL语句核心操作掌握创建表、插入、查询、更新、删除数据的SQL语法。SQL简介DDL数据定义语言CREATE:创建数据库或表对象ALTER:修改现有数据库对象的结构DROP:删除数据库或表对象DML数据操作语言INSERT:向表中插入新数据记录UPDATE:更新表中已存在的数据DELETE:删除表中的数据记录DQL数据查询语言SELECT:从一个或多个表中检索数据DCL数据控制语言GRANT:授予用户操作权限REVOKE:撤销用户的操作权限DDL-CREATETABLE(创建表)基本语法结构--标准创建表语法CREATETABLE<表名>(字段名1数据类型[列级别约束][默认值],字段名2数据类型[列级别约束][默认值],...[表级别约束条件]);实战示例:创建学生表--创建students表CREATETABLEstudents(idINTPRIMARYKEYAUTO_INCREMENT,--主键,自增nameVARCHAR(50)NOTNULL,--姓名,非空ageTINYINT,--年龄genderENUM('男','女')DEFAULT'未知');DDL-ALTERTABLE(修改表)添加字段(ADDCOLUMN)--为表添加新字段'address'ALTERTABLEstudentsADDCOLUMNaddressVARCHAR(100);修改数据类型(MODIFYCOLUMN)--修改'age'字段类型为INTALTERTABLEstudentsMODIFYCOLUMNageINT;重名字段(CHANGECOLUMN)--将'address'改名为'home_address'ALTERTABLEstudentsCHANGECOLUMNaddresshome_addressVARCHAR(100);删除字段(DROPCOLUMN)--删除'home_address'字段ALTERTABLEstudentsDROPCOLUMNhome_address;DDL-DROPTABLE(删除表)--1.基础删除语句DROPTABLEstudents;

--2.更安全的方式:避免表不存在时报错DROPTABLEIFEXISTSstudents;重要警告(WARNING)数据永久删除:DROPTABLE操作会彻底清除表结构及其所有数据,且通常无法恢复。生产环境慎用:执行前务必再三确认,特别是在生产环境中。最佳实践:推荐使用IFEXISTS关键字,防止因表不存在而导致的执行错误。DML-INSERT(插入数据)插入单行数据(SingleRow)--指定字段插入(推荐)INSERTINTOstudents(name,age,gender)VALUES('张三',20,'男');--自增主键可传NULL由数据库生成插入多行数据(MultipleRows)--批量插入,效率更高INSERTINTOstudents(name,age,gender)VALUES('王五',19,'男'),('赵六',22,'女');关键注意事项(KeyNotes)自增主键处理:对于自增主键(如id),插入时可以传入NULL或0,数据库会自动生成唯一值。效率建议:当需要插入大量数据时,强烈推荐使用多行插入语法,减少网络交互次数,提升性能。DML-UPDATE(更新数据)query.sqlUPDATEstudentsSETage=21WHEREname='张三';UPDATEstudentsSETage=23,gender='女'WHEREid=4;--危险!没有WHERE子句会更新表中所有记录!--UPDATEstudentsSETage=0;关键注意事项(WARNING)WHERE子句至关重要它用来精确指定要更新的记录范围,是防止误操作的第一道防线。切勿省略WHERE如果省略,UPDATE会作用于表中的每一条记录,这通常会导致灾难性的数据覆盖。DML-DELETE(删除数据)SQL示例代码--1.删除id为3的学生记录DELETEFROMstudentsWHEREid=3;--2.删除所有年龄大于30的学生记录DELETEFROMstudentsWHEREage>30;--危险!没有WHERE子句会删除所有记录!--DELETEFROMstudents;重要注意事项与UPDATE类似,DELETE语句中的WHERE子句至关重要!

它用来精确指定要删除的记录。如果省略WHERE子句,DELETE操作会删除表中的所有记录(表结构保留)。

这是高危操作,请务必在执行前进行确认。DQL-SELECT(查询数据)基础查询所有字段--查询所有字段和记录SELECT*FROMstudents;使用星号*代表所有字段,适用于需要查看全量数据的场景。查询指定字段--查询指定的字段列SELECTname,ageFROMstudents;明确指定字段名并用逗号分隔,查询结果更精简,性能更优。字段别名AS--使用中文别名SELECTnameAS'姓名'FROMstudents;使用AS关键字为字段起别名,支持中文,让查询结果更易读。DQL-WHERE子句(条件查询)基础比较与范围--等于/大于SELECT*FROMstudentsWHEREage=20;--范围查询SELECT*FROMstudentsWHEREageBETWEEN18AND22;集合成员查询(IN)--查询特定姓名的学生SELECT*FROMstudentsWHEREnameIN('张三','李四');--等同于:name='张三'ORname='李四'多条件组合(AND/OR)--且:年龄>19并且男SELECT*FROMsWHEREage>19ANDgender='男';--或:年龄<18或者女SELECT*FROMsWHEREage<18ORgender='女';DQL-ORDERBY(排序)单字段升序(ASC)--ASC是默认值,可省略SELECT*FROMstudentsORDERBYageASC;单字段降序(DESC)--从大到小排列SELECT*FROMstudentsORDERBYageDESC;多字段组合排序--先性别降序,再年龄升序SELECT*FROMstudentsORDERBYgenderDESC,ageASC;DQL-LIMIT(限制结果集)基础语法与代码示例--查询前5条学生记录SELECT*FROMstudentsLIMIT5;--分页查询:从第3条开始(偏移2),查5条--常用于显示第2页数据,每页5条SELECT*FROMstudentsLIMIT2,5;分页逻辑解析(LIMIToffset,count)offset(偏移量)从哪条记录开始(从0计数)count(数量)要查询的记录总数场景:每页显示5条数据第1页:LIMIT0,5第2页:LIMIT5,5第N页:LIMIT(N-1)*5,504Python操作MySQL数据库学习使用Python的第三方库连接和操作MySQL数据库,实现自动化数据处理。Python数据库APIDB-API标准接口Python本身不直接提供数据库连接,但定义了标准接口DB-API。

遵循该标准的驱动提供相似的编程接口,使得开发者可以用几乎相同的方式操作不同的数据库(如MySQL,PostgreSQL)。mysql-connector-python(官方驱动)MySQL官方提供的Python驱动,兼容性最好,维护最及时。PyMySQL(课程选用)纯Python实现的客户端库,使用简单,广受欢迎,本课程将以此为基础进行学习。SQLAlchemy(ORM框架)强大的对象关系映射框架,封装底层操作,提供更高级的面向对象编程方式。安装PyMySQL库通过pip命令安装#基础安装命令pipinstallPyMySQL

#兼容Python3(若系统存在多版本)pip3installPyMySQL验证安装是否成功#进入Python交互环境importpymysql

#如果没有报错(ImportError),即表示成功Python连接MySQL数据库importpymysql#1.配置数据库连接参数db_config={'host':'localhost',#主机地址'user':'root',#用户名'password':'your_pwd',#密码'database':'student_db'}#2.建立连接(异常处理)try:conn=pymysql.connect(**db_config)exceptpymysql.MySQLErrorase:print(f"Error:{e}")finally:#3.确保关闭连接conn.close()配置参数封装使用字典统一管理主机、用户名、密码等配置,代码更整洁且易于维护。异常安全机制利用try-except捕获连接错误,确保程序不会崩溃,并能输出具体的错误信息。资源自动释放使用finally块确保无论连接成功与否,连接对象最终都会被关闭,防止资源泄漏。使用Cursor执行SQL查询#1.创建游标对象withconnection.cursor()ascursor:#2.定义SQL(使用%s占位符防止注入)sql="SELECTnameFROMstudentsWHEREage>%s"#3.执行SQL语句cursor.execute(sql,(20,))#4.获取查询结果results=cursor.fetchall()print(f"查询结果:{results}")创建游标对象通过connection.cursor()获取指针,作为执行SQL的载体。参数化查询防注入使用%s作为占位符,将参数传入execute,避免SQL注入风险。获取查询结果集使用fetchall()获取全部记录,或fetchone()获取单条记录。Python插入数据(INSERT)与事务管理insert_data.pyimportpymysql#1.建立连接connection=pymysql.connect(**db_config)#2.执行插入操作withconnection.cursor()ascursor:sql="INSERTINTOstudentsVALUES(%s,%s,%s)"cursor.execute(sql,('钱七',20,'女'))#3.关键步骤:提交事务mit()#必须提交才能生效!exceptpymysql.MySQLErrorase:connection.rollback()#出错时回滚关键操作:提交事务(Commit)执行INSERT/UPDATE/DELETE后,必须调用commit()才能将修改真正写入数据库。异常处理:事务回滚(Rollback)当操作发生错误时,使用rollback()撤销所有未提交的修改,确保数据一致性。资源释放:关闭连接(Close)在finally块中检查并关闭数据库连接,避免资源泄漏。Python更新与删除数据#1.准备SQL语句与参数化执行withconnection.cursor()ascursor:#更新数据:将钱七的年龄改为23sql="UPDATEstudentsSETage=%sWHEREname=%s"cursor.execute(sql,(23,'钱七'))print(f"更新了{cursor.rowcount}条记录")#删除数据:删除ID为5的记录sql="DELETEFROMstudentsWHEREid=%s"cursor.execute(sql,(5,))print(f"删除了{cursor.rowcount}条记录")#2.提交事务(关键步骤!)mit()执行核心操作使用UPDATE和DELETE语句,务必配合WHERE子句避免全表操作,使用参数化防止注入。验证操作结果通过cursor.rowcount获取受影响的行数,这是验证操作是否成功的重要依据。事务管理机制所有修改操作后必须调用commit()提交事务。若发生错误,应使用rollback()回滚。使用with语句简化操作Python数据库操作示例#1.连接数据库(自动管理)withpymysql.connect(**cfg)asconn:withconn.cursor()ascursor:#2.执行查询cursor.execute("SELECTnameFROMstudents")results=cursor.fetchall()print(results)#游标在此自动关闭#连接在此自动关闭,无需手动调用close()自动管理资源执行完毕自动调用__exit__方法,确保连接和游标被正确关闭,即使发生异常也能防止资源泄漏。代码结构更简洁省去了繁琐的try...finally结构,让代码逻辑更加清晰直观,可读性更强。05Python文件系统操作掌握使用Python进行文件的读写、路径操作和目录管理文件操作基础Python通过内置的open()函数打开文件并返回文件对象,以此进行读写操作。常用文件打开模式'r'只读模式(默认)文件必须存在,否则报错。'w'写入模式存在则清空,不存在则创建新文件。'a'追加模式写入到文件末尾,不覆盖原有内容。'b'二进制/'t'文本模式'b'用于图片视频,需配合其他模式使用;'t'为默认。常用文件对象方法read(size=-1)读取内容,size指定字符数,默认-1读取全部。readline()/readlines()读取一行或所有行(返回列表)。write(str)将指定字符串写入文件。close()关闭文件,释放系统资源。文件读取(read)一次性读取(read)#适合小文件,一次性加载withopen('file.txt','r')asf:content=f.read()print(content)按行读取(forline)#适合大文件,节省内存withopen('file.txt','r')asf:forlineinf:print(line.strip())读取到列表(readlines)#所有行存入列表,便于操作withopen('file.txt','r')asf:lines=f.readlines()print(lines)最佳实践提示:强烈建议使用with语句操作文件,它会自动调用close()方法,确保文件安全关闭。处理中文时,请指定encoding='utf-8'以避免乱码。文件写入(write)覆盖写入模式('w')#覆盖原有内容withopen('file.txt','w')asf:f.write("HelloWorld!\n")f.write("NewContent\n")#原有内容被清空追加写入模式('a')#在末尾添加内容withopen('file.txt','a')asf:f.write("AppendLine1\n")f.write("AppendLine2\n")#保留原有内容多行写入(writelines)#列表批量写入lines=["Line1\n","Line2\n"]withopen('m.txt','w')asf:f.writelines(lines)#效率更高os模块-路径操作main.pyimportos#获取当前工作目录current_dir=os.getcwd()#路径拼接(跨平台安全)full_path=os.path.join("data","report.txt")#分解路径dir_part=os.path.dirname(full_path)file_part=os.path.basename(full_path)#检查存在性与获取大小ifos.path.exists(full_path):size=os.path.getsize(full_path)路径拼接os.path.join()自动适配Windows(\)和Linux(/)分隔符,确保代码跨平台可移植性。路径分解dirname/basename快速分离路径中的目录部分与文件名部分,简化路径分析逻辑。状态检查exists/getsize在读写文件前验证路径有效性,获取文件字节大小,提升程序健壮性。os模块-目录管理目录创建(Create)#创建单个目录os.mkdir("new_dir")#创建多级目录(exist_ok=True避免报错)os.makedirs("a/b/c",exist_ok=True)目录删除(Delete)#删除空目录(注意:必须为空)ifos.path.exists("new_dir"):os.rmdir("new_dir")目录遍历(Walk)#递归遍历当前目录下所有内容forroot,dirs,filesinos.walk('.'):#root:当前路径|dirs:子目录列表|files:文件列表print(f"当前目录:{root}")print(f"子目录:{dirs}")print(f"文件:{files}")print("-"*20)shutil模块-高级文件操作文件与目录复制#复制单个文件shutil.copy("source.txt","dest.txt")#递归复制整个目录树shutil.copytree("source_dir","dest_dir")移动与重命名#移动文件或目录(支持跨路径)shutil.move("old_name","new_name")删除非空目录(危险操作)#强制删除目录及其所有内容ifos.path.exists("dir_to_del"):shutil.rmtree("dir_to_del")核心特点总结shutil模块提供了比os模块更高级的文件操作接口,支持递归操作和跨路径移动,是自动化脚本中处理文件和目录的首选工具。06综合项目实战开发一个学生信息管理系统,综合运用数据库和文件操作知识项目需求分析核心功能需求添加学生信息输入姓名、年龄、性别,保存至数据库查询所有信息读取并显示系统中所有学生的详细记录按姓名查询支持模糊或精确查询,快速定位目标学生修改学生信息通过ID定位,更新学生的年龄等信息删除学生信息输入学生ID,安全删除对应记录导出数据文件将数据库中所有信息导出为文本文件备份技术选型方案开发语言Python3.x数据库系统MySQL数据库驱动PyMySQL运行环境命令行界面(CLI)项目数据库设计--创建数据库与学生表结构CREATEDATABASEIFNOTEXISTSstudent_managementDEFAULTCHARACTERSETutf8mb4;USEstudent_management;CREATETABLEIFNOTEXISTSstudents(idINTAUTO_INCREMENTPRIMARYKEY,nameVARCHAR(50)NOTNULL,genderENUM('男','女','未知')DEFAULT'未知');数据库初始化创建student_management库,设定字符集为utf8mb4以支持全量中文。核心表结构构建students表,包含id、name、age、gender四个核心字段,结构清晰。数据完整性约束使用ENUM类型限制性别取值范围,并设置默认值为“未知”,确保数据规范性。项目代码实现-数据库连接封装db_connect.pyimportpymysql#数据库连接配置DB_CONFIG={'host':'localhost','user':'root','database':'student_management'}defget_connection():try:conn=pymysql.connect(**DB_CONFIG)returnconnexceptpymysql.MySQLErrorase:print(f"Error:{e}")集中化配置管理将数据库连接参数(如主机、用户、数据库名)封装在字典DB_CONFIG中,便于统一管理和修改,避免硬编码散落在各处。连接获取函数封装通过get_connection()函数封装连接逻辑和异常处理,上层业务代码只需调用该函数即可获取连接,降低耦合度。项目代码实现-添加学生信息student_operations.py#导入模块与函数定义fromdb_connectimportget_connectiondefadd_student(name,age,gender):conn=get_connection()#参数化查询防止SQL注入try:withconn.cursor()ascursor:sql="INSERTINTOstudentsVALUES(%s,%s,%s)"cursor.execute(sql,(name,age,gender))mit()returnTrueexceptExceptionase:conn.rollback()returnFalsefinally:conn.close()核心函数定义定义add_student函数,接收姓名、年龄、性别三个参数,封装业务逻辑。安全与异常处理使用参数化查询防止SQL注入;通过try-except-finally确保事务回滚与连接关闭。数据库交互流程获取连接->执行INSERT语句->提交事务->关闭连接,标准化的CRUD操作流程。项目代码实现-查询学生信息查询所有学生(query_all_students)defquery_all_students():"""查询所有学生信息,返回元组列表"""conn=get_connection()ifnotconn:return[]try:withconn.cursor()ascursor:cursor.execute("SELECT*FROMstudents")returncursor.fetchall()exceptpymysql.MySQLErrorase:print(f"查询失败:{e}")finally:conn.close()按姓名查询(query_student_by_name)defquery_student_by_name(name):"""根据姓名精确查询,返回单条记录或None"""conn=get_connection()ifnotconn:returnNonetry:withconn.cursor()ascursor:sql="SELECT*FROMstudentsWHEREname=%s"cursor.execute(sql,(name,))returncursor.fetchone()exceptpymysql.MySQLErrorase:print(f"查询失败:{e}")finally:conn.close()项目代码实现-修改和删除学生信息更新学生年龄(update_student_age)defupdate_student_age(student_id,new_age):"""修改学生的年龄"""connection=get_connection()try:withconnection.cursor()ascursor:sql="UPDATEstudentsSETage=%sWHEREid=%s"cursor.execute(sql,(new_age,student_id))mit()exceptpymysql.MySQLErrorase:

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论