【问题描述】
请利用表9-1-8所示的学生信息表students_Info,筛选出年龄小于等于15岁的同学的姓名及性别。
表9-1-8 学生信息表
续表
输出结果:
[('陶培豪',15),('樊慧琳',14),('付小青',14),('高清源',15),('龚涛',14),('何虹',15),('贺婉云',15),('胡泓吉',15)]
【题前思考】
根据问题描述,填写表9-1-9。
表9-1-9 问题分析
【解题思路】
要查询数据,首先要连接给定的数据库,然后使用数据库中对应的数据表,通过select命令查询出需要的信息。
【程序代码】
【代码分析】
①:要使用sqlite3这个模块,必须先创建一个Connection对象,它代表数据库。
②:这条语句首先是筛选出年龄小于等于15岁的学生,然后选择学生的姓名和年龄,最后以迭代器的形式来输出结果。查询过程如图9-1-2所示。
图9-1-2 SQL查询过程
【优化提升】
要在执行select语句后获取数据,可以把游标作为iterator(迭代器),然后调用它的fetchone( )方法来获取一条匹配的行,也可以调用fetchall( )来得到包含多个匹配行的列表。原程序采用fetchone( )方法改写后如下:
import sqlite3
con=sqlite3.connect('students.db')
cur=con.cursor( )
cur.execute("select name,age from students_Infor where age<=15")
print(cur.fetchall( ))
con.close( )
【技术全貌】
sqlite3的where子句用于指定从一个表或多个表中获取数据的条件。如果满足给定的条件,即为真(true)时,则从表中返回特定的值。可以使用where子句来过滤记录,只获取需要的记录。where子句不仅可用在select语句中,也可用在update、delete语句中,我们还可以使用比较或逻辑运算符指定条件,如>、<、=、like、not。select语句的where子句的语法见表9-1-10。
表9-1-10 select语句的where子句的语法
续表