《Python编程基础》课件-6.4.4数据库连接与操作_第1页
《Python编程基础》课件-6.4.4数据库连接与操作_第2页
《Python编程基础》课件-6.4.4数据库连接与操作_第3页
《Python编程基础》课件-6.4.4数据库连接与操作_第4页
《Python编程基础》课件-6.4.4数据库连接与操作_第5页
已阅读5页,还剩6页未读 继续免费阅读

下载本文档

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

文档简介

数据库连接与操作教学目标1.了解数据库及作用

2.学习使用sqlite3模块数据库是一种用于存储、检索和管理数据的结构化系统,它通过表格、行和列组织信息,支持高效的查询和操作。核心概念:数据库(Database):数据集合的容器,通常包含多个表。表(Table):类似于电子表格,由行(记录)和列(字段)组成。1、什么是Python数据库?

importos#导入os模块用于文件操作db_file='example.db'#定义数据库文件名ifos.path.exists(db_file):#检查数据库文件是否存在print(f"Databasefile{db_file}exists.")#输出存在信息else:print(f"Databasefile{db_file}doesnotexistyet.")#输出不存在信息#在实际中,这里可创建连接以生成文件Python的标准库包含sqlite3模块,无需pip安装,直接导入即可使用。核心概念:导入模块:importsqlite3,开始使用数据库功能。sqlite3.connect(path),path为数据库文件路径,若不存在则创建。异常处理:sqlite3.Error捕获连接错误,如权限问题。关闭连接:conn.close(),释放资源。2.使用sqlite3模块连接SQLite数据库cursor.execute()是执行SQL的核心,返回结果通过fetchone()、fetchmany()或fetchall()获取。核心概念:执行查询:cursor.execute(sql,params),params为元组,避免注入。3.执行SQL查询和获取结果importsqlite3#导入模块conn=sqlite3.connect('students.db')#连接数据库conn.row_factory=sqlite3.Row#设置行工厂为Row,便于键访问cursor=conn.cursor()#创建游标cursor.execute("SELECT*FROMstudentsWHEREage>?",(18,))#执行带参数的SELECTresults=cursor.fetchall()#获取所有结果forrowinresults:#遍历结果print(f"ID:{row['id']},Name:{row['name']},Age:{row['age']}")#输出,使用键访问conn.close()#关闭连接cursor.execute()也用于INSERT、UPDATE和DELETE,支持executemany()批量操作。核心概念:插入:INSERTINTOtableVALUES(?,?),添加新行。更新:UPDATEtableSETcol=?WHEREcondition,修改匹配行。删除:DELETEFROMtableWHEREcondition,移除行。4.插入、更新和删除数据importsqlite3#导入模块conn=sqlite3.connect('students.db')#连接cursor=conn.cursor()#游标#插入示例cursor.execute("INSERTINTOstudents(name,age)VALUES(?,?)",('Alice',20))#插入单行print("LastinsertedID:",cursor.lastrowid)#输出新ID#更新和删除cursor.execute("UPDATEstudentsSETage=?WHEREname=?",(22,'Alice'))#更新cursor.execute("DELETEFROMstudentsWHEREage<?",(20,))#删除mit()#提交所有更改conn.close()#关闭事务使用begin/commit/rollback确保原子性,如银行转账全成功或全失败。核心概念:事务:一组原子操作,使用mit()或rollback()。回滚conn.rollback(),撤销未提交更改。5.事务管理与错误处理importsqlite3#导入模块conn=sqlite3.connect('bank.db',isolation_level=None)#手动事务模式cursor=conn.cursor()#游标try:conn.execute("BEGIN")#开始事务cursor.execute("UPDATEaccountsSETbalance=balance-100WHEREid=1")#扣款cursor.execute("UPDATEaccountsSETbalance=balance+100WHEREid=2")#加款mit()#提交事务exceptsqlite3.Errorase:#捕获错误conn.rollback()#回滚print(f"Transactionfailed:{e}")#输出错误finally:conn.close()#关闭高级查询与参数化使用?占位符执行复杂SQL,如JOIN或子查询,确保安全防注入。在Python环境中,这种查询提升性能,并在实际中用于报告,而不依赖视图。其高级的核心在于named参数,避免顺序错误,并在实际应用中优化。核心概念:参数化防SQL注入;高级SQL如SELECTwithJOIN;查询强调效率。6.高级查询与参数化importsqlite3#导入conn=sqlite3.connect('example.db')#连接cursor=conn.cursor()#游标cursor.execute('SELECTt1.idFROMtestt1JOINtestt2ONt1.id=t2.idWHEREt1.id>?',(1,))#参数化JOINresults=cursor.fetchall()#获取所有结果print(results)#输出列表如[(2,),(3,)]conn.close()#关闭SQLAlchemy是一种ORM工具,提供对象关系映射,抽象SQL为Python类,支持session管理和查询构建,而不依赖rawcursor。在Python环境中,SQLAlchemy处理复杂关系,并在实际中用于Web框架,而不依赖内置模块。其介绍的核心在于declarative_base定义模型,避免SQL硬编码,并在实际开发中提升生产力。核心概念:SQLAlchemy引擎连接;模型类映射表;介绍强调查询API。7.SQLAlchemy的介绍fromsqlalchemyimportcreate_engine,textengine=create_engine('sqlite:///:memory:',echo=True)withengine.connect()asconn:conn.execute(text("CREATETABLEtest(idINTEGERPRIMARYKEY,nameVARCHAR)"))conn.execute(text("INSERTINTOtest(name)VALUES(:name)"),{"name":"Alice"})mit()#对于写操作需要提交事务result=conn.execute(text("SELECT*FROMtest"))forrowinresult:

温馨提示

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

最新文档

评论

0/150

提交评论