自己设计大学排名-数据库实践
python 操作数据库读书笔记
MongoDB库
MongoDB的数据类型
String 字符串。存储数据常用的数据类型。在 MongoDB 中,UTF-8 编码的字符串才是合法的。
Integer 整型数值。用于存储数值。根据你所采用的服务器,可分为 32 位或 64 位。
Boolean 布尔值。用于存储布尔值(真/假)。
Double 双精度浮点值。用于存储浮点值。
Min/Max keys 将一个值与 BSON(二进制的 JSON)元素的最低值和最高值相对比。
Array 用于将数组或列表或多个值存储为一个键。
Timestamp 时间戳。记录文档修改或添加的具体时间。
Object 用于内嵌文档。
Null 用于创建空值。
Symbol 符号。该数据类型基本上等同于字符串类型,但不同的是,它一般用于采用特殊符号类型的语言。
Date 日期时间。用 UNIX 时间格式来存储当前日期或时间。你可以指定自己的日期时间:创建 Date 对象,传入年月日信息。
Object ID 对象 ID。用于创建文档的 ID。
Binary Data 二进制数据。用于存储二进制数据。
Code 代码类型。用于在文档中存储 JavaScript 代码。
Regular expression 正则表达式类型。用于存储正则表达式。
MongoDB的常用命令
> show dbs -- 查看数据库列表
> use admin --创建admin数据库,如果存在admin数据库则使用admin数据库
> db ---显示当前使用的数据库名称
> db.getName() ---显示当前使用的数据库名称
> db.dropDatabase() --删当前使用的数据库
> db.repairDatabase() --修复当前数据库
> db.version() --当前数据库版本
> db.getMongo() --查看当前数据库的链接机器地址
> db.stats() 显示当前数据库状态,包含数据库名称,集合个数,当前数据库大小 ...
> db.getCollectionNames() --查看数据库中有那些个集合(表)
> show collections --查看数据库中有那些个集合(表)
> db.person.drop() --删除当前集合(表)person
SQLite
SQLite 是一种嵌入式数据库,他的数据库就是一种文件,由于SQLite 本身是C写的 而且体积很小,
所以被经常集成到各种应用程序中,甚至是iOS和Android的app中都有继承
Python就内置了SQLite3 ,要操作关系数据库,首先需要链接到数据库 一个数据库的链接称之为connection 连接到数据库后,
需要打开游标 称之为cursor 通过cursor执行SQL语句
#导入SQLite驱动
>>>import sqlite3
#连接到SQLite数据库
#数据库文件是test.db
#如果文件不存在,会自动在当前目录中创建
>>>conn=sqlite3.connect('test.db')
#创建一个cursor
>>>cursor=conn.cursor()
#执行一条SQL语句 创建user表
>>>cursor.execute('create table user (id varchar(20) primary key, name varchar(20))')
<sqlite3.Cursor object at 0x 38429342>
#继续执行一条SQL语句 插入一条记录
>>>cursor.execute('insert into user(id name) values(\'1\',\'lc\')')
<sqlite3.Cursor object at 0x 384df29342>
#通过rowcount获得插入的行数
>>>cursor.rowcount
#关闭cursor
>>>cursor.close()
#提交事物
>>>conn.commit()
#关闭链接
>>conn.colse()
#查询
>>>conn=sqlite3.connect('test.db')
>>>cursor=conn.cursor()
#执行查询语句
>>>cursor.execute('select * from user where id =?','1')
<sqlite3.Cursor object at 0x 38429342>
#获得查询结果
>>>values=cursor.fetchall()
>>>values
[(u'1',u'lc')]
>>>cursor.close()
>>>conn.close()
把文件写入到数据库中
import pandas
import csv
import sqlite3
conn = sqlite3.connect("db48.db")
df = pandas.read_csv('E:/Python/wenjian/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()
查询学校的排名和得分
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.text
except:
return ""
def fillUnivList(soup):
data = soup.find_all('tr')
for tr in data:
ltd = tr.find_all('td')
if len(ltd)==0:
continue
singleUniv = []
for td in ltd:
singleUniv.append(td.string)
allUniv.append(singleUniv)
def printUnivList(num):
a="广东"
print("{1:^2}{2:{0}^10}{3:{0}^6}{4:{0}^4}{5:{0}^10}".format(chr(12288),"排名","学校名称","省市","总分","顶尖成果"))
for i in range(num):
u=allUniv[i]
#print(u[1])
if a in u:
print("{1:^2}{2:{0}^10}{3:{0}^6}{4:{0}^8.1f}{5:{0}^10}".format(chr(12288),i+1,u[1],u[2],eval(u[3]),u[6]))
def main():
url='http://www.zuihaodaxue.cn/zuihaodaxuepaiming2017.html'
html = getHTMLText(url)
soup = BeautifulSoup(html,"html.parser")
fillUnivList(soup)
num=len(allUniv)
printUnivList(num)
main()

posted on 2020-06-18 11:07 zhangsijie 阅读(202) 评论(0) 收藏 举报
浙公网安备 33010602011771号