快速入门网络爬虫系列 Chapter12 | 将数据存储到数据库

2020-10-28 14:52:39 浏览数 (1)

虽然CSV文件读写方便,但我们更希望把数据写道数据库中,方便查询和保存 数据库系统包括数据库、数据库管理系统、数据库的用户和支撑数据库管理系统运行的软硬件

数据模型是现实生活中数据的抽象,用来描述数据的概念和定义,是数据库中数据的存储方式,是数据库系统的基础。 常用的数据模型有以下三种:

  • 层次模型:以树形结构表示数据之间的关系
  • 网状模型:以网,图型结构表示数据之间的关系
  • 关系模型:以二维表结构表示数据之间的关系

根据数据库的数据模型划分,数据库可以分为以下类型:

  • 网状型数据库(Network Database)
  • 关系型数据库(Relational Darabase)
  • 树状数据库(Hierarchical Database)
  • 面向对象数据库(Object-oriented Database)

一、存到数据库

关系型数据库常用的5个对象

  • 表(Table):由行和列组成 列由同类信息组成,每列为一个字段,标题为字段名
  • 图标(Diagram):数据库表之间的关系示意图
  • 视图(View):一张虚拟的表,并不实际存储 可以限定用户可查看,修改的数据
  • 触发器(Trigger):由用户定义的SQL事务命令的集合
  • 索引(Index):根据给定的数据库表建立起来的顺序,可以快速访问数据

1、存到数据库后的亚子

2、SQL的作用

SQL是一种结构化程序查询语言,是关系型数据库的标准语言,可以用来:

  • 数据查询
  • 数据存取
  • 数据更新
  • 管理数据库

3、SQL的常用命令

SQL的常用命令主要分为:

  • 数据定义:CREATE,DROP,ALTER
  • 数据操作:SELECT,DELETE,UPDATE,INSERT

SQL语句以关键字SELECT,INSERT,UPDATE等开始,所有语句以分号为结束 eg:

代码语言:javascript复制
SELECT column1 FROM table1 WHERE condition;

查询结果如下:

下图为SQL语句的书写顺序和执行顺序:

Python连接SQL的常用包:

  • MySQLdb
  • pymysql

以pymysql为例:

  • import pymysql
  • import pymysql.cursors

二、字段类型

MySql常见类型数据:

三、常用操作

结合pymysql,使用python所给的数据库API,我们将介绍如下常用的操作命令:

  • 插入数据
  • 查询数据
  • 更新数据
  • 删除数据

1、创建连接

使用pymysql创建数据库连接:

代码语言:javascript复制
# 连接数据库
connect = pymysql.Connect(host='localhost',port=3306,user='root',passwd='199712','minfo1','mvinfo',charset = "utf-8")

获取数据库的游标,使用游标对数据库进行操作

代码语言:javascript复制
# 获取游标
cursor = connect.cursor()

通过cursor可以直接进行数据库操作: 创建数据库:

代码语言:javascript复制
cursor.execute('CREATE DATABASE test;')
cursor.execute("show databases;") 

查看数据库名称:

代码语言:javascript复制
for db in cursor.fetchall():
	print(db)

完整代码:

代码语言:javascript复制
import traceback
import pymysql as pymysql

def mysql(sql):
    db = pymysql.connect(host='localhost',port=3306,user='root',passwd='199712',charset = 'utf8')
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    try:
        print(sql)
        # 执行sqk语句
        result = cursor.execute(sql)
        #
        db.commit()
        results = cursor.fetchall()
    except:
        traceback.print_exc()
        # 发生错误时回滚
        db.rollback()
    # 关闭数据库连接
    db.close()
    return results

results = mysql('create database Lihuaxin')
for result in results:
    print(result)

2、插入数据

通过cursor实现向数据库插入数据:

代码语言:javascript复制
import traceback
import pymysql as pymysql

def mysql(sqls):
    db = pymysql.connect(host='localhost',port=3306,user='root',passwd='199712',charset = 'utf8')
    # 使用cursor()方法获取操作游标
    cursor = db.cursor()
    results=[]
    try:
        print("get sqlqueries = ",len(sqls))
        # 执行sqk语句
        for sql in sqls:
            result = cursor.execute(sql)
            print(sql,":",result)
            db.commit()
            results = cursor.fetchall()
    except:
        traceback.print_exc()
        # 发生错误时回滚
        db.rollback()
    # 关闭数据库连接
    db.close()
    return results

results = mysql(['use hackdata','show tables'])
for result in results:
    print(result)

刚开始我们看到的是没有show tables的:

然后通过添加下图红线处部分

如果多次执行一个数据库可以这样写:

插入数据:

代码语言:javascript复制
results = mysql(['insert into user values (1, "Tom");','insert into user values (2, "Li");','select * from user ;'])

3、查询数据

4、更新数据

5、删除数据

6、删表

0 人点赞