一、SQLite 数据库笔记
1、定义:SQLite是一种嵌入式数据库,它的数据库就是一个文件。使用SQLite不需要安装任何东西,是可以直接使用的。
2、步骤:首先需要连接到数据库,一个数据库连接称为Connection; 连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。
3、注意:
(1)搞清楚 Connection
和 Cursor
对象,打开后一定记得关闭。
(2)使用 Cursor
对象执行 insert
,update
,delete
语句时,执行结果由rowcount
返回影响的行数,就可以拿到执行结果。
(3)Cursor
对象执行 select
语句时,通过featchall()
可以拿到结果集。
(4)execute()
方法 :例 cursor.execute('select * from user where name=? and pwd=?', ('abc', 'password'))
(几个?对应几个参数)
实践:
二、根据大学排名csv,
a.把文件写入到以db+学号命名的数据库中;
b.查询我们学校在校排名和得分;
c.查询并显示广东省的学校的排名和得分;
d.将广东省的学校的排名和得分存为一个新表,并给出一个综合算法,综合考虑给出一个总排名,并显示。
1、把大学csv文件写入到以db+学号命名的数据库中;
import pandas import csv import sqlite3 conn = sqlite3.connect("db+2019310143123.db") df = pandas.read_csv('C:/Users/邓若言/Desktop/HTML.csv') df.to_sql('db2019310143123', conn, if_exists='append', index=False) cursor = conn.cursor() for row in cursor.execute('select * from db2019310143123 ORDER BY "序号"'): print(row) cursor.close() conn.commit() cursor.close()
效果如下:
2、查询我们学校的排名和得分,代码如下:
import pandas import csv import sqlite3 conn = sqlite3.connect("db+2019310143123.db") df = pandas.read_csv('C:/Users/邓若言/Desktop/HTML.csv') df.to_sql('db2019310143123', conn, if_exists='append', index=False) cursor = conn.cursor() cursor.execute('select * from db2019310143123') all = cursor.fetchall() for line in all: if "广东技术师范大学" in line: print(line) break else: print("False") cursor.close() conn.commit() cursor.close()
效果如下:
这说明原csv文件中没有“广东师范大学”的相关数据,需要重新获得新的文件。
经过查询 http://www.zuihaodaxue.com/zuihaodaxuepaiming2016.html 发现,2016年并没有关于广东技术师范大学的数据,所以我们将时间改为2018年,链接为
http://www.zuihaodaxue.com/zuihaodaxuepaiming2018.html
我们获得一个新的csv 文件,命名为 NEW ONE.csv , 并新建一个数据表命名为 deng2019310143123,查询排名代码如下:
import pandas import csv import sqlite3 conn = sqlite3.connect("db+2019310143123.db") df = pandas.read_csv('C:/Users/邓若言/Desktop/NEW ONE.csv') df.to_sql('deng2019310143123', conn, if_exists='append', index=False) cursor = conn.cursor() cursor.execute('select * from deng2019310143123') all = cursor.fetchall() for line in all: if "广东技术师范学院" in line: print(line) break else: print("False") cursor.close() conn.commit() cursor.close()
效果如下:
3、查询并显示广东省的学校的排名和得分,以2018年社会声誉(社会捐赠收入,千元)为例<学号尾数3>:
相关代码如下:
import pandas import sqlite3 import pandas conn= sqlite3.connect("db+2019310143123.db") df = pandas.read_csv('C:/Users/邓若言/Desktop/NEW ONE.csv') df.to_sql('YUE', conn, if_exists='append', index=False) cur = conn.cursor() cur.execute('SELECt * FROM YUE') yue = cur.fetchall() for line in yue: if "广东" in line: print("{} {} {} {}".format(line[0],line[1],line[2],line[5])) conn.close()
效果如下:
4、将广东省的学校的排名和得分存为一个新表,并给出一个综合算法,综合考虑给出一个总排名,并显示。
代码如下:
import pandas import sqlite3 conn= sqlite3.connect("db+2019310143123.db") k = pandas.read_csv('C:/Users/邓若言/Desktop/guangdong.csv',encoding='utf-8') k.to_sql('Guang', conn, if_exists='append', index=False) conn = sqlite3.connect('db+2019310143123.db') cur = conn.cursor() cur.execute('SELECt * FROM Guang') li = cur.fetchall() i=0 for line in li: i+=1 for item in line: print(item, end=' ') print() if i==10: break conn.close()
效果如下: