Python程序设计:从基础到人工智能实践标准教程-第9章 数据库编程_第1页
Python程序设计:从基础到人工智能实践标准教程-第9章 数据库编程_第2页
Python程序设计:从基础到人工智能实践标准教程-第9章 数据库编程_第3页
Python程序设计:从基础到人工智能实践标准教程-第9章 数据库编程_第4页
Python程序设计:从基础到人工智能实践标准教程-第9章 数据库编程_第5页
已阅读5页,还剩54页未读 继续免费阅读

下载本文档

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

文档简介

内容导读数据库是长期存储在计算机中、有组织、可共享、统一管理的大量数据的集合,绝大多数商业应用都需要使用数据库,如教务管理系统、食堂管理系统、购物网站、聊天软件等应用程序。Python提供了对各种数据库的良好支持,包括MySQL、SQLite、SQLServer、Oracle等数据库。本章将对数据库编程进行介绍。目录Contents9.1数据库基础9.2结构化查询语言SQL9.3MySQL的安装与使用9.4使用Python操作MySQL数据库9.5使用Python操作SQLite数据库9.6拓展练习9.1.1什么是数据库数据库,简单的讲,就是存放数据的仓库,只不过这个仓库是在计算机的存储设备上。严格的讲,数据库是长期存储在计算机内,有组织的、大量的、可共享的数据集合。数据库中的数据按一定的数据模型组织、描述和存储,具有较小的冗余度、较高的数据独立性和易扩展性,并可为各种用户共享。数据库起源于20世纪50年代,在不断的发展和演变过程中,先后出现过网状数据库、层次数据库、关系数据库、面向对象数据库等不同类型的数据库。这些数据库分别采用了不同的数据模型(数据组织方式),目前应用最为广泛的数据库是关系数据库。9.1.2关系数据库关系数据库是建立在关系模型基础上的数据库,它采用关系数据模型来组织和管理数据。一个关系数据库可以看成是多个关系表的集合,每个关系表可以看成是一个二维表。目录Contents9.1数据库基础9.2结构化查询语言SQL关注微信公众号DSSF007,回复关键字“清华电脑学堂”获取更多资源9.3MySQL的安装与使用9.4使用Python操作MySQL数据库9.5使用Python操作SQLite数据库9.6拓展练习9.2.1创建数据库在使用数据库之前,首先需要创建数据库,创建数据库的具体语法如下:CREATEDATABASE数据库名称;数据库创建后,可以通过如下语句打开数据库:USE数据库名称;数据库也可以被删除,删除数据库的语句如下:DROPDATABASE数据库名称;9.2.2创建数据表一个数据库中可以包含多个数据表,创建数据表的具体语法如下:CREATETABLE表名称(列名称1数据类型,列名称2数据类型,列名称3数据类型,...);9.2.3插入数据INSERTINTO语句用于向数据表中插入记录,其语法如下:INSERTINTO表名(字段1,字段2,…字段n)values(值1,值2,…值n);也可以简化为如下的格式:INSERTINTO表名values(值1,值2,…值n);这种简化格式,不用指定具体字段名称,表示将按照数据表中字段的顺序依次赋值。9.2.4查询数据SELECT语句用于从表中选择数据,简单SELECT语句的语法格式如下:SELECT字段列表FROM表名WHERE查询条件;其中,字段列表用于指定要查询的列,它可以是一组列(字段)名、星号、表达式或变量等;WHERE子句用于设置查询条件,过滤掉不需要的记录,WHERE子句可以包含各种条件运算符。9.2.5修改数据UPDATE语句用于修改表中的数据,其语法如下:UPDATE表名SET列名=新值WHERE条件表达式;9.2.6删除数据DELETE语句用于删除表中的数据,其语法如下:DELETEFROM表名WHERE条件表达式;说明:使用UPDATE语句删除数据时,如果没有指定WHERE子句,则表示删除表中所有数据。例如,DELETEFROMstudents就表示删除学生表中所有数据。目录Contents9.1数据库基础9.2结构化查询语言SQL关注微信公众号DSSF007,回复关键字“清华电脑学堂”获取更多资源9.3MySQL的安装与使用9.4使用Python操作MySQL数据库9.5使用Python操作SQLite数据库9.6拓展练习9.3.1下载MySQL在浏览器地址栏中输入/archives/installer/,跳转到下载MySQL安装包的页面。9.3.2安装MySQL首先找到下载的MySQL安装文件,然后双击该文件,开始安装MySQL,如图所示。安装过程中,会出现选择安装类型的窗口,在该窗口中选择默认的安装类型即可,如图所示。9.3.2安装MySQL在后续出现的窗口中,连续单击“Next”按钮,直到出现如图9-4所示的组件列表窗口。单击“Execute”按钮,开始安装列表中给出的各种组件,安装完成后。结果如图。9.3.3使用MySQL安装完成后,MySQL数据库的后台服务进程自动启动。服务进程启动后,可以使用MySQL安装时自带的命令行工具操作MySQL数据库。9.3.3使用MySQL可以在命令提示符的后面输入SQL语句来执行数据库的各种操作。下面通过一个综合实例来演示操作MySQL数据库的方法。1. 创建数据库testDB2. 打开数据库testDB3. 创建数据表students4. 向数据表students中插入4条记录5. 查询数据表students中的数据6. 修改数据表students中的数据7. 删除数据表students中的数据8. 删除数据表students9. 删除数据库testDB目录Contents9.1数据库基础9.2结构化查询语言SQL关注微信公众号DSSF007,回复关键字“清华电脑学堂”获取更多资源9.3MySQL的安装与使用9.4使用Python操作MySQL数据库9.5使用Python操作SQLite数据库9.6拓展练习9.4.1连接MySQL数据库PyMySQL模块连接数据库时,使用的是pymysql.connect()函数,其常用的参数及说明如表所示。9.4.2创建数据库PyMySQL模块使用游标对象创建数据库,示例代码如下:importpymysql#数据库地址:'localhost',用户名:'root',密码:'258008'db=pymysql.connect(host='localhost',user='root',password='258008')cursor=db.cursor()#创建游标对象#游标对象执行创建数据库的SQL语句9.4.2创建数据库cursor.execute('createdatabaseschooldefaultcharset=utf8;')#游标对象执行查询所有数据库的SQL语句cursor.execute('showdatabases;')print(cursor.fetchall())#显示系统所有数据库cursor.close()#关闭游标db.close()#关闭数据库连接程序执行结果如下:(('information_schema',),('mysql',),('performance_schema',),('sakila',),('school',),('sys',),('world',))9.4.3创建数据表在MySQL数据库管理系统中存在多个系统数据库和用户数据库,因此在创建数据表时需要指定具体的数据库名称。PyMySQL模块使用游标对象连接school数据库,并在该数据库中创建students数据表,示例代码如下:importpymysql#数据库地址:'localhost',用户名:'root',密码:'258008',数据库名称:'school'db=pymysql.connect(host='localhost',user='root',password='258008',database='school')9.4.3创建数据表#创建游标对象cursor=db.cursor()#创建数据表的SQL语句sql='''CREATETABLEstudents(snovarchar(12)primarykey,namevarchar(20),sexvarchar(2),ageinteger(4));'''9.4.3创建数据表#执行创建表的SQL语句cursor.execute(sql)#显示数据库中所有的数据表cursor.execute('showtables;')print(cursor.fetchall())cursor.close()#关闭游标db.close()#关闭数据库连接上述程序执行结果如下:(('students',),)从程序执行结果可以发现,数据表students已经被成功创建。9.4.4插入数据PyMySQL模块向数据表中插入数据有3种方法:一次执行一个语句,插入一条记录;一次执行一个语句,插入多条记录;一次执行多个语句,插入多条记录。实现上述操作,需要使用PyMySQL模块中的两个函数。(1)cursor.excute(sql)函数一次执行一个语句,其中参数sql为SQL语句。(2)cursor.excutemany(sql,data)函数一次执行多个语句,其中参数sql为SQL语句,data为一个二维列表,其形式类似于数据表中的每条记录。cursor.excutemany(sql,data)函数会重复执行sql语句,将data里面的数据插入到数据表。9.4.4插入数据使用上述两个函数向数据表中插入数据。9.4.5查询数据查询操作是数据库所有操作中使用最为频繁的操作,PyMySQL模块提供了两个函数用于查询操作:(1)cursor.fetchone()函数函数的功能是从游标对象中获取一行数据,返回一个元组。如果没有数据,则返回None。(2)cursor.fetchall()函数从游标对象中获取所有的行数据,返回多个元组。如果没有数据,则返回None。游标对象除了上述两个经常使用的函数外,还有一个常用的rowcount属性,用于表示执行SQL语句后影响的行数。在查询操作中,cursor.rowcount代表的是从数据表这查询到的记录条数。9.4.6修改数据通过游标对象执行UPDATA语句可以实现对数据的修改操作。例如,将students数据表中学号为'001020250201'的学生的年龄增加1,示例代码如下:#导入pymysql模块importpymysqldb=pymysql.connect(host='localhost',user='root',password='258008',database='school')#创建游标对象cursor=db.cursor()9.4.6修改数据#查询修改前的数据select_sql="SELECT*FROMstudentsWHEREsno='001020250201';"#执行查询数据的SQL语句cursor.execute(select_sql)#获取数据one=cursor.fetchone()print('修改前:',one)9.4.6修改数据#修改数据的SQL语句update_sql="UPDATEstudentsSETage=age+1WHEREsno='001020250201';"#执行修改数据的SQL语句cursor.execute(update_sql)#提交到数据库mit()9.4.6修改数据#查询修改后的数据cursor.execute(select_sql)#获取一条数据one=cursor.fetchone()print('修改后:',one)cursor.close()#关闭游标db.close()#关闭数据库连接上述程序执行结果如下:修改前:('001020250201','杨佳','女',21)修改后:('001020250201','杨佳','女',22)9.4.7删除数据通过游标对象执行DELETE语句可以实现删除数据的操作。例如,将students数据表中学号为'001020250201'的学生删除,示例代码如下:importpymysqldb=pymysql.connect(host='localhost',user='root',password='258008',database='school')9.4.7删除数据#创建游标对象cursor=db.cursor()#查询数据的SQL语句sql01="SELECT*FROMstudentsWHEREsno='001020250201';"#删除前的数据cursor.execute(sql01)print('删除前:',cursor.fetchall())#删除数据的SQL语句sql02="DELETEFROMstudentsWHEREsno='001020250201';"cursor.execute(sql02)9.4.7删除数据#提交到数据库mit()#删除后的数据cursor.execute(sql01)print('删除后:',cursor.fetchall())cursor.close()#关闭游标db.close()#关闭数据库连接上述程序执行结果如下:删除前:(('001020250201','杨佳','女',22),)删除后:()目录Contents9.1数据库基础9.2结构化查询语言SQL关注微信公众号DSSF007,回复关键字“清华电脑学堂”获取更多资源9.3MySQL的安装与使用9.4使用Python操作MySQL数据库9.5使用Python操作SQLite数据库9.6拓展练习9.5.1连接SQLite数据库Python3通过SQLite3模块连接数据库时,如果数据库不存在,则会自动创建一个数据库,示例如下:#导入sqlite3模块importsqlite3#指定数据库名称和路径dbName="d:\\test.db"#连接数据库,如果数据库不存在,则在指定的目录创建数据库con=sqlite3.connect(dbName)print('连接数据库成功')#关闭数据库连接con.close()上述程序执行结果如下:连接数据库成功9.5.2创建数据表SQLite3模块使用游标对象连接test.db数据库,并在该数据库中创建students数据表,示例代码如下:#导入sqlite3模块importsqlite3#指定数据库名称和路径dbName="d:\\test.db"#连接数据库,如果数据库不存在,则在指定的目录创建数据库con=sqlite3.connect(dbName)#创建游标对象cursor=con.cursor()9.5.2创建数据表#创建游标对象cursor=con.cursor()#创建数据表的SQL语句sql='''CREATETABLEstudents(snovarchar(12)primarykey,namevarchar(20),sexvarchar(2),ageinteger(4));'''9.5.2创建数据表#游标对象执行创建表的SQL语句cursor.execute(sql)#提交到数据库mit()print('创建数据表成功')cursor.close()#关闭游标con.close()#关闭数据库连接上述程序执行结果如下:创建数据表成功9.5.3插入数据SQLite3模块和PyMySQL模块一样,也提供了两个插入数据的函数:cursor.excute(sql)和cursor.excutemany(sql,data)函数。使用上述两个函数向数据表中插入数据,示例代码如下:#导入sqlite3模块importsqlite3#指定数据库名称和路径dbName="d:\\test.db"#连接数据库,如果数据库不存在,则在指定的目录创建数据库con=sqlite3.connect(dbName)#创建游标对象cursor=con.cursor()9.5.3插入数据#插入一条数据的SQL语句sql01="INSERTINTOstudents(sno,name,sex,age)values('001020250101','曹语','女',19);"#游标对象执行SQL语句cursor.execute(sql01)#插入多条记录的SQL语句sql02="""INSERTINTOstudents(sno,name,sex,age)values('001020250102','张泉','男',18),('001020250103','丁当','男',21);"""9.5.3插入数据#游标对象执行SQL语句cursor.execute(sql02)#待插入的多条记录data=[('001020250104','李圆','男',20),('001020250201','杨佳','女',22)]#注意:这里需要用?代替数据sql03='INSERTINTOstudents(sno,name,sex,age)values(?,?,?,?);'#游标对象执行SQL语句cursor.executemany(sql03,data)9.5.3插入数据#提交到数据库mit()print('插入数据成功')cursor.close()#关闭游标con.close()#关闭数据库连接上述程序执行结果如下:插入数据成功9.5.4查询数据SQLite3也是通过cursor.fetchone()函数和cursor.fetchall()函数查询数据。和PyMySQL模块不同的是,SQLite3模块中的cursor.fetchall()函数返回的是一个元素为元组的二维列表。查询数据的示例代码如下:#导入sqlite3模块importsqlite3#指定数据库名称和路径dbName="d:\\test.db"#连接数据库,如果数据库不存在,则在指定的目录创建数据库con=sqlite3.connect(dbName)#创建游标对象9.5.4查询数据cursor=con.cursor()#SQL语句sql="SELECT*FROMstudents;"#执行SQL语句cursor.execute(sql)#获取一条数据one=cursor.fetchone()print(type(one))print(one)9.5.4查询数据#获取所有数据alldata=cursor.fetchall()print(type(alldata))foriteminalldata:print(item)cursor.close()#关闭游标con.close()#关闭数据库连接9.5.4查询数据上述程序执行结果如下:<class'tuple'>('001020250101','曹语','女',19)<class'list'>('001020250102','张泉','男',18)('001020250103','丁当','男',21)('001020250104','李圆','男',20)('001020250201','杨佳','女',22)9.5.5修改数据通过游标对象执行UPDATA语句可以实现对数据的修改操作。例如,将students数据表中学号为'001020250201'的学生的年龄增加1,示例代码如下:#导入sqlite3模块importsqlite3#指定数据库名称和路径dbName="d:\\test.db"#连接数据库,如果数据库不存在,则在指定的目录创建数据库con=sqlite3.connect(dbName)#创建游标对象cursor=con.cursor()9.5.5修改数据#查询修改前的数据select_sql="SELECT*FROMstudentsWHEREsno='001020250201';"#执行查询数据的SQL语句cursor.execute(select_sql)#获取数据one=cursor.fetchone()print('修改前:',one)9.5.5修改数据#修改数据的SQL语句update_sql="UPDATEstudentsSETage=age+1WHEREsno='001020250201';"#执行修改数据的SQL语句cursor.execute(update_sql)#提交到数据库mit()9.5.5修改数据#查询修改后的数据cursor.execute(select_sql)#获取一条数据one=cursor.fetchone()print('修改后:',one)cursor.close()#关闭游标con.close()#关闭数据库连接上述程序执行结果如下:修改前:('001020250201','杨佳','女',22)修改后:('001020250201','杨佳','女',23)9.5.6删除数据通过游标对象执行DELETE语句可以实现删除数据的操作。例如,将students数据表中学号为'001020250201'的学生删除,示例代码如下:#导入sqlite3模块importsqlite3#指定数据库名称和路径dbName="d:\\test.db"#连接数据库,如果数据库不存在,则在指定的目录创建数据库con=sqlite3.connect(dbName)#创建游标对象9.5.6删除数据cursor=con.cursor()

#查询数据的SQL语句sql01="SELECT*FROMstudentsWHEREsno='001020250201';"#删除前的数据cursor.e

温馨提示

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

最新文档

评论

0/150

提交评论