自己设计大学排名--python数据库

一、数据库读书笔记(使用SQLite)

访问和操作SQLite数据时,需要首先导入sqlite3模块,然后创建一个与数据库关联的Connection对象,成功创建Connection对象以后,再创建一个Cursor对象,并且调用Cursor对象的execute()方法来执行SQL语句创建数据表以及查询、插入、修改或删除数据库中的数据:

 1 import sqlite3                           
 2 #导入模块
 3 conn = sqlite3.connect('example.db')     
 4 #连接数据库
 5 # 连接到SQLite数据库
 6 # 数据库文件是example.db
 7 # 如果文件不存在,会自动在当前目录创建
 8 c = conn.cursor()
 9 # 创建表,
10 c.execute('''CREATE TABLE stocks (date text, trans text, symbol text, qty real, price real)''')
11 # 插入一条记录
12 c.execute("INSERT INTO stocks VALUES ('2006-01-05','BUY', 'RHAT', 100, 35.14)")
13 # 提交当前事务,保存数据
14 conn.commit()
15 # 关闭数据库连接
16 conn.close()
实验代码

如果需要查询表中内容,那么重新创建Connection对象和Cursor对象之后,可以使用下面的代码来查询。

for row in c.execute('SELECT * FROM stocks ORDER BY price'):
    print(row)

查询结果:

('2006-01-05', 'BUY', 'RHAT', 100.0, 35.14)

Connection对象:

connect(database[, timeout, isolation_level, detect_types, factory]) 
#连接数据库文件,也可以连接":memory:"在内存中创建数据库
sqlite3.Connection.execute()
#执行SQL语句
sqlite3.Connection.cursor()
#返回游标对象
sqlite3.Connection.commit()
#提交事务
sqlite3.Connection.rollback()
#回滚事务
sqlite3.Connection.close()
#关闭连接

Cursor对象常用方法:

close(...):
#关闭游标 
 execute(...)
#执行SQL语句
 executemany(...)
#重复执行多次SQL语句
 executescript(...)
#一次执行多条SQL语句 
 fetchall(...)
#从结果集中返回所有行记录
 fetchmany(...):
#从结果集中返回多行记录
 fetchone(...)
#从结果集中返回一行记录

二、自己设计大学排名

(1)把这个文件存入以db+自己的学号命名的数据库中。

import sqlite3
import pandas

conn = sqlite3.connect('db+2019310143107.db')
#连接数据库
pm=pandas.read_csv("d:/pm.csv")
pm.to_sql('db2019310143107', conn, if_exists='append', index=False)
#把数据写入数据库
c = conn.cursor()
#创建表

for row in c.execute('select * from db2019310143107'):
    print(row)
c.close() conn.commit() #guanbi数据连接

 (2)查询我们学校的排名和得分

c.execute('select * from db2019310143107')
all = c.fetchall()
for line in all:
    if "广东技术师范学院" in line:
        print("{} {} {}".format(line[0],line[1],line[7]))

结果:

352 广东技术师范学院 337

(3)查询并显示广东省的排名和分数。

c.execute('select * from db2019310143107')
all = c.fetchall()
for line in all:
    if "广东" in line:
        print("{} {} {}".format(line[0],line[1],line[7]))

结果:

9 中山大学 29393
19 华南理工大学 19220
43 南方科技大学 1042
56 暨南大学 8018
77 南方医科大学 8952
91 深圳大学 5597
102 华南师范大学 5317
109 广东外语外贸大学 478
110 汕头大学 2661
143 华南农业大学 5236
144 广东工业大学 3799
150 广州医科大学 1169
176 广州大学 3389
182 广州中医药大学 312
279 广东医科大学 1745
285 广东财经大学 109
323 广东药科大学 1634
340 广东海洋大学 909
352 广东技术师范学院 337
364 广东金融学院 305
381 佛山科学技术学院 348
原文地址:https://www.cnblogs.com/linjiaxin59/p/13022891.html