使用SQLite

使用SQLite

在Sqlite中根据分数段查找指定的名字:

#还了解了

1、__file__ 默认变量会返回当前文件的文件路径(绝对路径)

2、for 列表推导式 

3、assert用法

 

 

 1 # -*- coding: utf-8 -*-
 2 '''
 3 use SQLite3
 4 返回指定分数区间的名单,按分数从低到高排序
 5 
 6 '''
 7 import os, sqlite3
 8 # print("__file__ = "+__file__)
 9 db_file = os.path.join(os.path.dirname(__file__), 'test.db')
10 if os.path.isfile(db_file):
11     os.remove(db_file)
12 
13 # 初始数据:
14 conn = sqlite3.connect(db_file)
15 cursor = conn.cursor()
16 cursor.execute('create table user(id varchar(20) primary key, name varchar(20), score int)')
17 cursor.execute(r"insert into user values ('A-001', 'Adam', 95)")
18 cursor.execute(r"insert into user values ('A-002', 'Bart', 62)")
19 cursor.execute(r"insert into user values ('A-003', 'Lisa', 78)")
20 cursor.close()
21 conn.commit()
22 conn.close()
23 
24 def get_score_in(low, high):
25     ' 返回指定分数区间的名字,按分数从低到高排序 '
26     conn = sqlite3.connect(db_file)
27     cursor = conn.cursor()
28     cursor.execute("select name from user where score between ? and ? order  by score",(low,high))
29     values = cursor.fetchall()
30     #返回的数据如下:[('Bart',), ('Lisa',), ('Adam',)]
31     #使用列表推导式,生成一个新的列表,并返回
32     #分开写可以写成 x = [ a[0] for a in values ] ; return x
33     cursor.close()
34     conn.close()
35     return [ a[0] for a in values ]
36 # 测试:
37 #assert 两边相等,如果 不相等,则抛出异常,异常为 , 后面内容,在这里则是执行方法,并展示 方法返回的内容
38 assert get_score_in(80, 95) == ['Adam'], get_score_in(80, 95)
39 assert get_score_in(60, 80) == ['Bart', 'Lisa'], get_score_in(60, 80)
40 assert get_score_in(60, 100) == ['Bart', 'Lisa', 'Adam'], get_score_in(60, 100)
41 
42 print('Pass')

 

posted @ 2021-02-22 13:59  link2_2020  阅读(77)  评论(0)    收藏  举报