作者:爱编程的小金毛球球
日期:2020年9月22日
Python sqlite3练习:
编写get_score_in函数,在Sqlite中根据分数段查找指定的名字(按分数从低到高排序)
难点:
- SQLite数据库的相关操作
- 获取的结果集转换成对应测试格式
import os,sqlite3
db_file = os.path.join(os.path.dirname(__file__), "test.db")
print(os.path)
print(os.path.dirname(__file__))
print(db_file)
conn = sqlite3.connect(db_file)
cursor = conn.cursor()
cursor.execute("create table user (id varchar(20) primary key , name varchar (20), score int)")
cursor.execute(r"insert into user values ('A-001', 'Adam', 95)")
cursor.execute(r"insert into user values ('A-002', 'Bart', 62)")
cursor.execute(r"insert into user values ('A-003', 'Lisa', 78)")
print(cursor.rowcount)
cursor.close()
conn.commit()
conn.close()
def get_score_in(low, high):
conn = sqlite3.connect(db_file)
cursor = conn.cursor()
cursor.execute("select name from user where score >=? and score <=? order by score", (low, high))
values = cursor.fetchall()
print("输出结果集:", values)
cursor.close()
conn.close()
temp = []
for v in values:
temp.append(v[0])
print("转换后的temp:",temp)
return temp
assert get_score_in(80, 95) == ['Adam'], get_score_in(80, 95)
assert get_score_in(60, 80) == ['Bart', 'Lisa'], get_score_in(60, 80)
assert get_score_in(60, 100) == ['Bart', 'Lisa', 'Adam'], get_score_in(60, 100)
print('Pass')
输出结果:
