Python语言程序设计(微课版)-课件 CH13-数据库操作(宽屏版)_第1页
Python语言程序设计(微课版)-课件 CH13-数据库操作(宽屏版)_第2页
Python语言程序设计(微课版)-课件 CH13-数据库操作(宽屏版)_第3页
Python语言程序设计(微课版)-课件 CH13-数据库操作(宽屏版)_第4页
Python语言程序设计(微课版)-课件 CH13-数据库操作(宽屏版)_第5页
已阅读5页,还剩57页未读 继续免费阅读

下载本文档

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

文档简介

第13章

数据库程序设计1.SQLite数据库3.Python操作数据库2.SQL语句简介4.综合案例主要内容1SQLite数据库SQLite数据库SQLite是一款轻量级的关系数据库系统主要应用场景:作为手机应用的数据库以及小型桌面软件的数据库SQLite安装官方下载地址:/download.htmlAnaconda中自动集成SQLite库,可直接使用安装SQLite可视化管理工具NavicatforSQLiteSQLite数据库操作创建数据库创建数据库表添加数据SQL语句创建数据库第一步:新建连接填写连接名选择数据文件存放位置,并命名为Mydata创建数据库表在“表”处单击鼠标右键新建数据库表图书数据库主要操作包括:查询图书信息、添加新信息、修改信息、删除信息。创建数据库表图书表:图书ID(book_id)书名(title)作者(author)价格(price)出版社(publisher)ISBN号(isbn)备注(remark)创建数据库表图书表(book)添加数据向book表中添加相应数据2SQL语句简介SQL语句简介结构化查询语言(StructuredQueryLanguage,SQL)是一种通用且功能强大的关系数据库操作语言,具有数据定义、数据处理、数据控制等功能。包括:(1)数据定义语言(DataDefinitionLanguage,DDL)(2)数据处理语言(DataManipulationLanguage,DML)(3)数据控制语言(DataControlLanguage,DCL)创建表语句CreateTable使用CREATETABLE语句定义表CREATETABLE<表名>(<字段名l><数据类型1>[(<大小>)][NOTNULL][PRIMARYKEY|UNIQUE][,<字段名2><数据类型2>[(<大小>)][NOTNULL][PRIMARYKEY|UNIQUE][,…])创建表语句CreateTableSQLite中提供5种数据类型CreateTable【例13.1】创建book表。CREATETABLEbook(book_idINTEGERPRIMARYKEY,titleTEXT,authorTEXT,priceREAL,publisherTEXT,isbnTEXT,remarkTEXT)CreateTable【例13.1】创建book表。CREATETABLEbook(book_idINTEGERPRIMARYKEY,titleTEXT(50),authorTEXT(50),priceREAL,publisherTEXT,isbnTEXT(50),remarkTEXT(100))插入数据记录的语句insert此时可以,打开表,录入数据。插入数据记录的语句insert使用INSERTINTO语句将数据插入表中。INSERTINTO<表名>[(<字段名1>[,<字段名2>[,…]])]VALUES(<表达式1>[,<表达式2>[,…]])如果INTO后省略字段名,则必须为新记录中的所有字段赋值,且使各项数据和表定义的字段顺序一一对应。插入数据记录的语句insert【例13.2】向book表中添加一条记录。INSERTINTObook(title,author,price,publisher,isbn,remark)VALUES('信息与智能科学导论','宁爱军等',50,'人民邮电出版社','9787115514660','无')修改表中数据的语句update使用UPDATE语句修改表中数据。UPDATE<表名>SET<字段名1>=<表达式1>[,<字段名2>=<表达式2>[,…]][WHERE<条件>]如果不带WHERE子句,则更新表中所有的记录;

如果带WHERE子句,则只更新表中满足条件的记录。修改表中数据的语句update【例13.3】修改book表中某一本图书的价格。修改图书信息:根据书名更新价格:updatebooksetprice={价格}wheretitle={书名}UPDATEbookSETprice=59WHEREtitle='围城'删除表中数据的语句delete使用DELETE语句删除表中数据。DELETEFROM<表名>[WHERE<条件>]如果不带WHERE子句,则删除表中所有记录,该表对象仍保留在数据库中。如果带WHERE子句,则只删除表中满足条件的记录。删除表中数据的语句delete【例13.4】删除book表中某一本图书的信息。deletefrombookwheretitle={书名}DELETEFROMbookWHEREtitle='围城'查询表中数据的语句select使用SELECT语句查询表中数据。SELECT[ALL|DISTINCT][TOP<数值>[PERCENT]]<目标列>[[AS]<列标题>]FROM<表或查询1>[[AS]<别名1>],<表或查询2>[[AS]<别名2>][WHERE<联接条件>AND<筛选条件>][GROUPBY<分组项>[HAVING<分组筛选条件>]][ORDERBY<排序项>[ASC|DESC]]查询表中数据的语句select【例13.5】查询所有图书信息。SELECTtitle,author,price,publisher,isbn,remarkFROMbook查询表中数据的语句select【例13.6】查询某一本图书的信息。SELECTtitle,author,price,publisher,isbn,remarkFROMbookWHEREtitle={书名}SELECTtitle,author,price,publisher,isbn,remarkFROMbookWHEREtitle='红楼梦'SQL语句--select【例13.7】根据价格范围查询图书信息。selecttitle,author,price,publisher,isbn,remarkfrombookwherepricebetween{开始值}and{结束值}SELECTtitle,author,price,publisher,isbn,remarkFROMbookWHEREpricebetween20and40SQL语句--select【例13.8】统计不同出版社的图书出版数量。SELECTpublisher,COUNT(title)ASbook_countFROMbookGROUPBYpublisher3Python操作数据库Python操作数据库con=sqlite3.connect("Mydata.db")cur=con.cursor()cur.execute()cur.close()con.close()Python操作SQLite从Python3.x版本开始,在标准库中已经内置了SQLlite3模块导入SQLite3模块importsqlite3

1:创建数据库连接在Python中通过connect()函数连接数据库并获取数据库连接对象。connect(database,timeout)database:指定路径的数据库文件,默认为当前文件夹timeout:访问数据的超时设定例如:con=sqlite3.connect("Mydata.db")2:创建数据库操作游标Python通过游标来读取和操作数据库。在Python中通过cursor()函数创建数据库操作游标cursor()例如:cur=con.cursor()3:执行SQL语句在创建了数据库操作游标后,就可以执行SQL语句。execute(sql[,optionalparameters])执行一个SQL语句例如:cur.execute("SELECT*FROMbook")#获取所有数据book_all=cur.fetchall()4:关闭数据库操作游标和连接在数据库操作完成后,需要先关闭数据库操作游标,再关闭数据库连接。close()例如:cur.close()#关闭数据库操作游标con.close()#关闭数据库连接数据库操作过程【例13.9】创建、关闭数据库连接和数据库操作游标close()importsqlite3#导入SQLite3模块con=sqlite3.connect("Mydata.db")#创建数据库连接cur=con.cursor()#创建数据库操作游标pass#此处可以添加数据库操作代码cur.close()#关闭数据库操作游标con.close()#关闭数据库连接操作数据库的基本方法Python中通过execute()函数执行一条SQL语句execute(sql[,optionalparameters])(1)sql:参数化的SQL语句。某些不固定的数据,我们可通过使用占位符(问号?)和命名占位符(:xxx)。(2)[,optionalparameters]:替换占位符。操作数据库的基本方法【例13.10】带有参数的SQL语句。cur.execute("INSERTINTObook(title,author)VALUES(?,?)",(title,author))cur.execute("INSERTINTObook(title,author)VALUES(:title,

:author)",{'title':title,'author':author})操作数据库的基本方法事务提交:在执行完SQL语句后,还需要通过事务提交才能真正完成对数据库的操作。commit()mit()#提交事务1.创建表【例13.11】创建book表。importsqlite3con=sqlite3.connect("Mydata.db")#创建数据库连接cur=con.cursor()#创建数据库操作游标cur.execute("CREATETABLEbook(book_idINTEGERNOTNULLPRIMARYKEYAUTOINCREMENT,titleTEXT,authorTEXT,priceREAL,publisherTEXT,isbnTEXT,remarkTEXT)")mit()#提交事务print('创建图书表成功')cur.close()#关闭数据库操作游标con.close()#关闭数据库连接2.添加数据到表【例13.12】向book表中添加一条记录。#创建数据库连接con和游标cur#添加一本图书print("======添加新图书=====")title=input("书名:")author=input("作者:")price=eval(input("价格:"))#注意price为数字格式,#因此需要用eval()进行转换publisher=input("出版社:")isbn=input("ISBN号:")remark=input("备注:")cur.execute("INSERTINTObook(title,author,price,publisher,isbn,remark)VALUES(?,?,?,?,?,?)",(title,author,price,publisher,isbn,remark))mit()print('添加图书信息成功')#关闭数据库游标cur和连接con3.修改表中数据【例13.13】修改book表中某一本图书的价格#根据书名修改图书价格print("======修改图书信息===========")title=input("书名:")price=eval(input("价格:"))cur.execute("UPDATEbookSETprice=?WHEREtitle=?",(price,title))mit()print('修改图书价格成功')#关闭数据库游标cur和连接con4.删除表中数据【例13.14】删除book表中某一本图书的信息。#创建数据库连接con和游标cur#根据书名删除图书信息print("======删除图书信息===========")title=input("书名:")cur.execute("DELETEFROMbookWHEREtitle=?",(title,))#title后的逗号不能少mit()print('删除图书成功')#关闭数据库游标cur和连接con5.查询表中多条数据在Python中通过使用fetchall()函数后取得SQL查询语句的多条数据。fetchall()获取查询结果的所有数据,返回一个列表5.查询表中多条数据【例13.15】查询所有图书信息(不显示图书ID)。#查询所有图书信息(不显示图书ID)print("======所有图书信息===========")cur.execute("SELECTtitle,author,price,publisher,isbn,remarkFROMbook")#获取所有数据book_all=cur.fetchall()#遍历forbookinbook_all:print(book)#关闭数据库游标cur和连接con5.查询表中多条数据【例13.16】根据价格范围查询图书信息(不显示图书ID)。#创建数据库连接con和游标cur#根据价格范围查询图书信息(不显示图书ID)print("======价格在一定范围的图书信息===========")low_price=eval(input("最低价格:"))high_price=eval(input("最高价格:"))cur.execute("SELECTtitle,author,price,publisher,isbn,remarkFROMbookWHEREpriceBETWEEN?AND?",(low_price,high_price))book_all=cur.fetchall()

#获取所有数据forbookinbook_all:

#遍历print(book)#关闭数据库游标cur和连接con5.查询表中多条数据【例13.17】统计不同出版社的图书出版数量。#创建数据库连接con和游标cur#统计不同出版社的图书出版数量print("======不同出版社的图书出版数量===========")cur.execute("SELECTpublisher,COUNT(title)ASbook_countFROMbookGROUPBYpublisher")book_all=cur.fetchall()

#获取所有数据forbookinbook_all:

#遍历

print(book)#关闭数据库游标cur和连接con6.查询表中单条数据在Python中通过使用fetchone()函数执行一条SQL查询语句fetchone()返回一个包含查询结果的元组。6.查询表中单条数据【例13.18】根据书名查询图书信息(不显示图书ID)#创建数据库连接con和游标cur#根据书名查询图书信息print("======一本书的信息===========")title=input("书名:")cur.execute("SELECTtitle,author,price,publisher,isbn,remarkFROMbookWHEREtitle=?",(title,))#获取一条数据book_one=cur.fetchone()print(book_one)#关闭数据库游标cur和连接con4综合案例员工数据库【例13.19】简易数据库操作程序的主要功能包括创建表,以及数据添加、修改、删除、查询等操作,并创建相应菜单。在磁盘上创建了一个Mydata.db数据。创建数据库表员工档案表employee:员工ID(employee_id),姓名(employee_name),性别(gender),学历(education),生日(birthday),电话(mobile),住址(address),备注(remark)添加数据向employee表中添加相应数据创建数据库表创建员工表cur.execute("CREATETABLEemployee(employee_idINTEGERNOTNULLPRIMARYKEYAUTOINCREMENT,

employee_nameTEXT,genderTEXT,educationTEXT,birthdayTEXT,mobileTEXT,addressTEXT,remarkTEXT)")mit()插入数据添加员工SQL语句cur.execute("INSERTINTOemployee(employee_name,gender,education,birthday,mobile,address,remark)VALUES(?,?,?,?,?,?,?)",(employee_name,

gender,

education,birthday,mobile,address,remark))mit()修

温馨提示

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

评论

0/150

提交评论