这边先简要的介绍一下SQLite数据库:
SQLite是一种嵌入式数据库,它的数据库就是一个文件。和熟悉的MySQL一样,都是关系型数据库。
SQLite的特点是轻量级、可嵌入,但不能承受高并发访问,适合桌面和移动应用。
要操作关系数据库,首先需要连接到数据库,一个数据库连接称为Connection;
连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。
Python内置了sqlite3
import sqlite3
#导入SQLite驱动
conn = sqlite3.connect('test.db')
#连接到SQLite数据库,数据库文件是test.db,如果不存在就会自动在当前目录创建一个
cursor = conn.cursor()
#创建一个游标:cursor
#cursor.execute('drop table user') 删除表
cursor.execute('create table user (id varchar(20) primary key,name varchar(20))')
#执行一条sql语句,这里是创建一个user表,包含两个属性id 和 name
cursor.execute('insert into user (id,name) values(\'1\',\'mike\')')
#继续执行sql语句,这里是插入记录,
cursor.execute('insert into user (id,name) values(\'3\',\'bob\')')
#继续执行sql语句,这里是插入记录,
print(cursor.rowcount)
#这个rowcount查到是影响的行数的意思,究竟什么意思我也还没弄清,望指教!
cursor.close()
#关闭cursor
conn.commit()
#提交事务
conn.close()
#关闭connection
conn2 = sqlite3.connect('test.db')
cursor2 = conn2.cursor()
cursor2.execute('select * from user where name = ?',('bob',))
#执行查询语句
values = cursor2.fetchall()
#select语句执行通过fetchall()拿到结果集,是一个list,每个元素是tuple
print(values)
cursor2.close()
conn2.close()
在Sqlite中根据分数段查找指定的名字,返回指定分数区间的名字,按分数从低到高排序 '
import os,sqlite3
dbFile = os.path.join(os.path.dirname(__file__),'test.db')
if os.path.isfile(dbFile):
os.remove(dbFile)
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
cursor.execute('create table user (id varchar(20) primary key , name varchar(20), score int)')
cursor.execute('insert into user (id,name,score) values(\'A-001\',\'Adam\',\'95\')')
cursor.execute('insert into user (id,name,score) values (\'A-002\',\'Bart\',\'62\')')
cursor.execute('insert into user (id,name,score) values (\'A-003\',\'Lisa\',\'78\')')
cursor.close()
conn.commit()
conn.close()
def getScoreIn(low,high):
conn = sqlite3.connect('test.db')
cursor = conn.cursor()
cursor.execute('select name from user where score between ? and ? order by score',(low,high))
values = cursor.fetchall()
cursor.close()
conn.close()
list2 = []
for i in range(len(values)):
list2.append(values[i][0])
print(list2)
getScoreIn(50,100)
getScoreIn(60,70)
getScoreIn(70,80)
getScoreIn(80,90)
['Bart', 'Lisa', 'Adam']
['Bart']
['Lisa']
[]