前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速入门网络爬虫系列 Chapter12 | 将数据存储到数据库

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

作者头像
不温卜火
发布2020-10-28 14:52:39
1.2K0
发布2020-10-28 14:52:39
举报
文章被收录于专栏:不温卜火不温卜火

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

1
1

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

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

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

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

一、存到数据库

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

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

1、存到数据库后的亚子

2
2

2、SQL的作用

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

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

3、SQL的常用命令

SQL的常用命令主要分为:

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

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

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

查询结果如下:

5
5

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

6
6

Python连接SQL的常用包:

  • MySQLdb
  • pymysql

以pymysql为例:

  • import pymysql
  • import pymysql.cursors

二、字段类型

MySql常见类型数据:

7
7
8
8
9
9

三、常用操作

结合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的:

12
12

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

13
13

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

14
14

插入数据:

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

3、查询数据

17
17

4、更新数据

19
19

5、删除数据

20
20

6、删表

21
21
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-04-15 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 一、存到数据库
    • 1、存到数据库后的亚子
      • 2、SQL的作用
        • 3、SQL的常用命令
        • 二、字段类型
        • 三、常用操作
          • 1、创建连接
            • 2、插入数据
              • 3、查询数据
                • 4、更新数据
                  • 5、删除数据
                    • 6、删表
                    相关产品与服务
                    数据库管理
                    数据库管理(Database Management Center,DMC)是一个高效,安全,可靠的数据库一站式管理平台。DMC 提供可视化的库管理、实例会话管理、SQL 窗口、SQL 安全审计、SQL 变更审批、实时监控、操作审计等数据库管理能力,集成诊断优化和数据可视化分析能力,从而简化和规范数据库管理操作、降低数据库运维门槛、提升运维效率。
                    领券
                    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档