自己设计大学排名-数据库实践
一、SQLite 数据库笔记
1、定义:SQLite是一种嵌入式数据库,它的数据库就是一个文件。使用SQLite不需要安装任何东西,是可以直接使用的。
2、步骤:首先需要连接到数据库,一个数据库连接称为Connection; 连接到数据库后,需要打开游标,称之为Cursor,通过Cursor执行SQL语句,然后,获得执行结果。
SRE实战 互联网时代守护先锋,助力企业售后服务体系运筹帷幄!一键直达领取阿里云限量特价优惠。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()
效果如下:

