Discuss / Python / SQLite练习

SQLite练习

Topic source

________却

#1 Created at ... [Delete] [Delete and Lock User]
# -*- coding: utf-8 -*-

import os, sqlite3

db_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)")
cursor.close()
conn.commit()
conn.close()

def get_score_in(low, high):
    ''' 返回指定分数区间的名字,按分数从低到高排序'''
    conn = sqlite3.connect(db_file)
    cursor = conn.cursor()
    try:
        cursor.execute('select name from user where score between ? and ? order by score asc', (low, high))
        values = cursor.fetchall()
    except:
        raise
    finally:
        cursor.close()
        #conn.commit()
        conn.close()
    return [v[0] for v in values]
try:
    assert get_score_in(80, 95) == ['Adam'], get_score_in(80, 95)
except AssertionError:
    print('result is not right: get_score_in(80, 95) is not equal to ["Adam"]')
    raise
finally:
    print('get_score_in(80, 95) = ' + str(get_score_in(80, 95)))

try:
    assert get_score_in(60, 80) == ['Bart', 'Lisa'], get_score_in(60, 80)
except AssertionError:
    print('result is not right: get_score_in(60, 80) is not equal to ["Bart", "Lisa"]')
    raise
finally:
    print('get_score_in(60, 80) = ' + str(get_score_in(60, 80)))

try:
    assert get_score_in(60, 100) == ['Bart', 'Lisa', 'Adam'], get_score_in(60, 100)
except AssertionError:
    print('result is not right: get_score_in(60, 100) is not equal to ["Bart", "Lisa", "Adam"]')
    raise
finally:
    print('get_score_in(60, 100) = ' + str(get_score_in(60, 100)))

运行结果:

get_score_in(80, 95) = ['Adam']
get_score_in(60, 80) = ['Bart', 'Lisa']
get_score_in(60, 100) = ['Bart', 'Lisa', 'Adam']

  • 1

Reply