Discuss / Python / 练习


Topic source

#1 Created at ... [Delete] [Delete and Lock User]
import os, sqlite3db_file = os.path.join(os.path.dirname(__file__), 'test.db')if os.path.isfile(db_file):    os.remove(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)")conn.commit()cursor.close()conn.close()def get_score_in(low, high):    """ 返回指定分数区间的名字,按分数从低到高排序 """    l = []    try:        conn1 = sqlite3.connect(db_file)        cursor1 = conn1.cursor()        cursor1.execute('select * from user where score>=? and score<=? order by score', (low, high))        values = cursor1.fetchall()        # values.sort(key=lambda k:k[2]) # 可查询结果时进行排序,也可使用此代码进行排序        if len(values) > 0:            for n in range(len(values)):                l.append(values[n][1])            return l        else:            print('查询结果为空')    except Exception as e_results:        print('查询异常')    finally:        cursor1.close()        conn1.close()# 测试: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')

  • 1