当前位置: 首页 > 编程日记 > 正文

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

今天我们来学习以下有关于数据提取以及数据库的一些知识,

我们知道其实数据库是一个非常神奇的存在,它是是按照 数据结构来组织、 存储和管理数据的仓库

我们可以使用它对数据进行储存和管理!

下面是有关于sqlite3的学习,SQLite3 可使用 sqlite3 模块与 Python 进行集成。

这是一个环境自带的函数库,所以在编写代码时直接import就行啦~

我们有一些可以学习的语句:

语句内容
sqlite3.connect(database [,timeout ,other optional arguments])该 API 打开一个到 SQLite 数据库文件 database 的链接。timeout 参数表示连接等待锁定的持续时间,直到发生异常断开连接。timeout 参数默认是 5.0(5 秒)。如果给定的数据库名称 filename 不存在,则该调用将创建一个数据库。如果您不想在当前目录中创建数据库,那么您可以指定带有路径的文件名,这样您就能在任意地方创建数据库。
connection.cursor([cursorClass])该例程创建一个 cursor,将在 Python 数据库编程中用到。
cursor.execute(sql [, optional parameters])该例程执行一个 SQL 语句。该 SQL 语句可以被参数化(即使用占位符代替 SQL 文本)。sqlite3 模块支持两种类型的占位符:问号和命名占位符(命名样式)。
connection.execute(sql [, optional parameters])该例程是上面执行的由光标(cursor)对象提供的方法的快捷方式,它通过调用光标(cursor)方法创建了一个中间的光标对象,然后通过给定的参数调用光标的 execute 方法。
cursor.executemany(sql, seq_of_parameters)该例程对 seq_of_parameters 中的所有参数或映射执行一个 SQL 命令。
connection.executemany(sql[, parameters])该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executemany 方法。
cursor.executescript(sql_script)该例程一旦接收到脚本,会执行多个 SQL 语句。它首先执行 COMMIT 语句,然后执行作为参数传入的 SQL 脚本。所有的 SQL 语句应该用分号(;)分隔。
connection.executescript(sql_script)该例程是一个由调用光标(cursor)方法创建的中间的光标对象的快捷方式,然后通过给定的参数调用光标的 executescript 方法。
connection.total_changes()该例程返回自数据库连接打开以来被修改、插入或删除的数据库总行数。

还有很多实用的语句可以使用哦~

接下来我们来生成一个数据库(database)吧~代码如下:

import sqlite3conn = sqlite3.connect('test.db')print ("Opened database successfully")

这时如果原本没有数据库就会创建一个:

接下来我们可以通过创建表以及做出显示来导入数据啦,当然我们还有许多方法可以对现有的数据库进行修改!

我们可以在COMPANY 表中增加记录,通过insert插入数据,通过delete删除记录,通过select显示记录等等等……

进入下一个部分,我们利用爬虫爬取最好大学网上对于2018年全国各大高校的各项指标的排名及综合状况:

# -*- coding: utf-8 -*-
"""
Spyder EditorThis is a temporary script file.
"""
import requests
import pandas as pd
import numpy as np
from bs4 import BeautifulSoup
import sqlite3
allUniv=[]
def getHTMLText(url):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding = 'utf-8'return r.textexcept:return ""
def fillUnivList(soup):data = soup.find_all('tr')for tr in data:ltd = tr.find_all('td')if len(ltd)==0:continuesingleUniv = []for td in ltd:singleUniv.append(td.string)allUniv.append(singleUniv)
def printUnivList(num):with open(r'C:\Users\DELL\Desktop\test.txt','w') as f:f.write("{1:^2}{2:{0}^10}{3:{0}^4}{4:{0}^8}{5:{0}^6}\n".format((chr(12288)),"排名","学校名称","省市","总分","培训规模"))for i in range(num):u=allUniv[i]f.write("{1:^4}{2:{0}^10}{3:{0}^5}{4:{0}^8.1f}{5:{0}^10}\n".format((chr(12288)),u[0],u[1],u[2],eval(u[3]),u[6]))f.close()if 1:print("successful")else:print("fail")def main(num):url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html'html = getHTMLText(url)soup = BeautifulSoup(html,"html.parser")fillUnivList(soup)printUnivList(num)main(600)

这是爬取了其中对前600名高等院校的“培训规模”的情况,最终我们将数据导入一个文本文件中(.txt):

查询“广东技术师范学院”的排名和得分信息,我们有下面的代码:

import requests
from bs4 import BeautifulSoup
allUniv=[]
def getHTMLText(url):try:r=requests.get(url,timeout=30)r.raise_for_status()r.encoding = 'utf-8'return r.textexcept:return ""
def fillUnivList(soup):data = soup.find_all('tr')for tr in data:ltd = tr.find_all('td')if len(ltd)==0:continuesingleUniv = []for td in ltd:singleUniv.append(td.string)allUniv.append(singleUniv)
def printUnivList(num):a="广东技术师范学院"print("{1:^4}{2:{0}^8}{3:{0}^6}{4:{0}^6}{5:{0}^8}".format((chr(12288)),"排名","学校名称","省市","总分","培训规模"))for i in range(num):u=allUniv[i]if a in u:print("{1:^4}{2:{0}^10}{3:{0}^5}{4:{0}^8.1f}{5:{0}^10}".format((chr(12288)),u[0],u[1],u[2],eval(u[3]),u[6]))
def main(num):url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2018.html'html = getHTMLText(url)soup = BeautifulSoup(html,"html.parser")fillUnivList(soup)printUnivList(num)
main(600)

于是我们在海量的信息中就能够找到我们学校的排名得分啦~

进一步地,我们调查一下广东省的高校的排名和得分情况,顺便对其中一项指标进行比较,只要将上述的代码中a这个参数的变量改为“广东”,即寻找所有关于广东省内的院校就能得到,同时改变爬虫爬取的内容:

def printUnivList(num):a="广东技术师范学院"print("{1:^4}{2:{0}^8}{3:{0}^6}{4:{0}^6}{5:{0}^8}".format((chr(12288)),"排名","学校名称","省市","总分","培训规模"))for i in range(num):u=allUniv[i]if a in u:print("{1:^4}{2:{0}^10}{3:{0}^5}{4:{0}^8.1f}{5:{0}^10}".format((chr(12288)),u[0],u[1],u[2],eval(u[3]),u[6]))

于是有下述结果:

(篇幅问题,并没有完全给出结果)

转载于:https://www.cnblogs.com/iconangle/p/10925127.html

相关文章:

Windows 和 Linux 应用程序从上到下调用层次比较

刚毕业的时候,做了将近一年的Window下的程序开发,主要用MFC,那是也不明白程序在操作系统角度从上到下的整个调用层次。遇到调用库函数,不明白,就查MSDN,每个月1500行代码左右,那时以为这就是软件…

Java项目:药品管理系统(java+swing+Gui+mysql)

源码获取:博客首页 "资源" 里下载! 功能介绍:用户管理、药品库存管理、进销管理、营销管理、药品购入、药品售出、药市信息 系统主页: SuppressWarnings("serial") public class SystemMainView extends JFr…

WEBSHELL跳板REDUH使用说明

原文链接: http://www.fendou.info/network/webshell-proxy-reduh.html reDuh是可以把内网服务器的端口通过http或https隧道转发到本机,形成一个TCP连通回路,用于目标服务器在内网或做了端口策略的情况下连接目标服务器内部端口的工具。 reDuh和LCX类似&…

站立会议(三)

一、会议时间:2014年4月13日 二、会议目的:统计项目进度以及每个人的进度、计划以及问题 三、会议内容: 党云龙: 今天内容 查阅资料,上网搜索,完成API调用; 遇到问题 还是在实现的时候无法阻止…

python celery

celery 一般用于做异步 和定时任务 不过听网上说 celery 坑还是蛮多的,特别定时任务,我们一般用来做定时任务,还有数据导入导出。celery 不支持 redis cluster 集群模式uWSGI 自带了一个简单的 Spooler 可以处理大部分异步任务和周期运行的任…

c语言实现memcpy

今天到I 公司去面试,面试方式比较特殊,没有笔试,就是2 个面试官,一人一句轮番发问,涉及面很广,涉及到操作系统(MMU 、page out 、process/thread 、semaphore 、interrupt), OOP( 多态、design pattern) 、…

Java项目:图书管理系统(java+swing+Gui+Mysql)

源码获取:博客首页 "资源" 里下载! 功能介绍:借阅列表、图书类别管理、图书馆里、用户管理、借阅管理、关于我们 登录服务类: WebServlet("/LoginServlet") public class LoginServlet extends HttpServlet …

十五天精通WCF——第三天 client如何知道server提供的功能清单

通常我们去大保健的时候,都会找姑娘问一下这里能提供什么服务,什么价格,这时候可能姑娘会跟你口述一些服务或者提供一份服务清单,这样的话大 家就可以做到童嫂无欺,这样一份活生生的例子,在wcf中同样是一个…

MySQL Cluster 日常维护

在前面几篇文章已经详细介绍了MySQL Cluster的搭建,配置讲解。而且相信大家都掌握了基本用法。现在我们来看看Cluster的日常维护。熟悉日常维护,将有助于工作中更好的管理和使用Cluster。 一. 数据备份 相信大家都熟悉mysql的日常备份工具,比…

20165219王彦博《基于Cortex-M4的虚拟机制作与测试》课程设计个人报告

20165219王彦博《基于Cortex-M4的虚拟机制作与测试》课程设计个人报告 一、个人贡献 参与课设题目讨论及完成全过程; 资料收集; 负责环境搭建,代码运行下载; 撰写小组结题报告。 二、设计中遇到的问题及解决方法 1 实验六以太网服…

extern数组与extern指针

数组名代表了存放该数组的那块内存,它是这块内存的首地址。这就说明了数组名 是一个地址,而且,还是一个不可修改的常量,完整地说,就是一个地址常量。数组名 跟枚举常量一样,都属于符号常量。数组名 这个符号…

Java项目:医院管理系统(java+javaweb+jdbc+Mysql+lw)

源码获取:博客首页 "资源" 里下载! 功能介绍: 登录、注册、用户/管理员(角色)、用户信息管理、科系信息管理、查看所有科系、新增科系信息、删除指定科系、修改科系信息、病房信息管理、病人信息管理、医生类型管理、病人手术管理…

Mongodb地理空间索引

1、索引: 建立索引既耗时也费力,还需要消耗很多资源。使用{"bakckground":true}选项可以使这个过程在后台完成,同时正常处理请求。如果不包括background 这个选项,数据库会阻塞建立索引期间的所有请求。阻塞的做法会让索…

Juniper的路由器、防火墙、交换机如何恢复出厂配置

Juniper的路由器、防火墙、交换机如何恢复出厂配置有些时候,在正常的业务使用中,逐条删除配置的内容很繁琐,我们可以使用恢复出厂配置,清空设备中的配置;还有的时候,由于设备配置异常,可以使用恢…

【转载】标准输入输出、错误输出、重定向标准输出

【转载】标准输入输出、错误输出、重定向标准输出 原文:标准输入输出、错误输出、重定向标准输出 再来看看 >& 操作符: 重定向操作符描述 > 将命令输出写入到文件或设备(如打印机),而不是命令提示符窗口或…

(Interrupt Latency) 中断延迟

中断延迟 (Interrupt Latency) 中断延迟 是指从硬件中断发生到开始执行中断处理程序第一条指令之间的这段时间。 也就是: 计算机接收到中断信号到操作系统作出响应,并完成换到转入中断服务程序的时间。 不严格地,也可以表述为&#xff1a…

Java项目:干活管理系统(java+SSM+Jsp+Mysql)

源码获取:博客首页 "资源" 里下载! 前台用户和后台管理员两种角色: 前台用户功能有:发布兼职、发布帖子、查看公告、个人中心、投诉等。 后台管理员功能有:用户管理、兼职管理、帖子管理、聊天管理、广告管…

20135234mqy 实验四

北京电子科技学院(BESTI) 实 验 报 告 课程:java程序设计 班级:1352 姓名:mqy 学号:20135234 成绩: 指导教师:娄嘉鹏 实验日期:2015.6…

我的第一张地图报表

一直以来对于地图都很陌生,感觉好强大,可以根据地理位置去分析数据,下面我简单的做了一张地图展示数据的报表。 接下来就简单的说一下设计过程和应该注意的地方 效果:(鼠标放在省份区域上,显示该省的数据&a…

SpringBoot第十篇:thymeleaf详解

作者:追梦1819 原文:https://www.cnblogs.com/yanfei1819/p/10931435.html 版权声明:本文为博主原创文章,转载请附上博文链接! 引言 SpringBoot 对 Web 的支持,官方推荐的是模板引擎 thymelaf。本章中&…

嵌入式系统开发过程中遇到的——volatile

嵌入式 系统开发过程中遇到的—— volatile 对于不同的计算机体系结构,设备可能是端口映射,也可能是内存映射的 。如果系统结构支持独立的 I/O 地址空间,并且是端口映射,就必须使用汇编语言完成实际对设备的控制&#xff…

薏米红豆粥的功效和实践演示

熬薏米红豆粥有很多技巧和讲究。薏米很硬,红豆也很硬,假设已经煮在锅里,大概熬一个多小时不坏,这是一种浪费火灾或电力,它甚至可以把水烧开,原因症结。我建议的方法有两种:第一种方法是在锅里加…

Java项目:财务预算管理系统(java+SSM+Jsp+Mysql+Layui+Maven)

源码获取:博客首页 "资源" 里下载! 一、项目简述 功能包括:实现公司对项目的管理。 二、项目运行 环境配置: Jdk1.8 Tomcat8.5 mysql Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持) …

POJ 3080 多个串最长公共子序列

求多个串最长公共子序列&#xff0c;字典序最小输出。枚举剪枝kmp.比较简单&#xff0c;我用find直接查找16ms #include<iostream> #include<string> #include<algorithm> using namespace std; string s[61]; int main() {int ta;cin>>ta;int n;while…

HDU 2561 第二小整数

2019-05-27 18:07:06 加油&#xff0c;坚持&#xff01;&#xff01;&#xff01; 水题 #include <bits/stdc.h> using namespace std; int a[100]; int main() {int t;scanf("%d", &t);while(t--){int n;scanf("%d", &n);for (int i 0; i …

Java项目:在线高中考试系统(java+SSM+Jsp+Mysql+Maven)

源码获取&#xff1a;博客首页 "资源" 里下载&#xff01; 项目分为前台和后台&#xff0c;前台主要为学生角色、后台主要为管理员角色。 管理员添加试题和发布试卷&#xff0c;学生负责在线考试、在线查看成绩和错题记录列表等。 管理员功能有&#xff1a;年级管理…

asp.net mvc 学习

Routing讲解&#xff1a; http://www.cnblogs.com/wangiqngpei557/p/3379095.html Filter讲解&#xff1a; http://www.cnblogs.com/ymnets/p/3452407.html ASP.NET MVC 支持以下类型的操作筛选器&#xff1a; 授权筛选器。 这些筛选器用于实现 IAuthorizationFilter 和做出关于…

Linux数据库性能优化--文件系统相关优化

实际也中也用到下文中所说的内存文件系统1、ramfs 记得是32位文件系统安装oracle 为oracle分配SGA突破1.7G大小限制2、mmap 的文件可以放在tmpfs挂载的文件系统中http://www.ibm.com/developerworks/cn/linux/management/tune/index.html1&#xff0e; 引言实践证明Lin…

jQuery Mobile的学习时间bottonbutton的事件学习

版权声明&#xff1a;本文为博主原创文章。未经博主同意不得转载。https://blog.csdn.net/xmt1139057136/article/details/27700521 程序猿都非常懒&#xff0c;你懂的&#xff01; 生命的绝唱来机仅仅争朝夕&#xff0c;如诗的年华更需惜时如金。不要让今天的懈怠成为一生的痛…

C++中 public,protected, private 访问标号小结

第一&#xff1a;private, public, protected 访问标号的访问范围。 private&#xff1a; 只能由1.该类中的函数、2.其友元函数访问。 不能被任何其他访问&#xff0c;该类的对象也不能访问。 protected&#xff1a; 可以被1.该类中的函数、2.子类的函数、以及3.其友元函数…