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

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)    收藏  举报

导航