专栏首页不温卜火快速入门网络爬虫系列 Chapter12 | 将数据存储到数据库

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

虽然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:

SELECT column1 FROM table1 WHERE condition;

查询结果如下:

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

Python连接SQL的常用包:

  • MySQLdb
  • pymysql

以pymysql为例:

  • import pymysql
  • import pymysql.cursors

二、字段类型

MySql常见类型数据:

三、常用操作

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

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

1、创建连接

使用pymysql创建数据库连接:

# 连接数据库
connect = pymysql.Connect(host='localhost',port=3306,user='root',passwd='199712','minfo1','mvinfo',charset = "utf-8")

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

# 获取游标
cursor = connect.cursor()

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

cursor.execute('CREATE DATABASE test;')
cursor.execute("show databases;") 

查看数据库名称:

for db in cursor.fetchall():
	print(db)

完整代码:

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实现向数据库插入数据:

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

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

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

插入数据:

results = mysql(['insert into user values (1, "Tom");','insert into user values (2, "Li");','select * from user ;'])

3、查询数据

4、更新数据

5、删除数据

6、删表

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 大数据应用导论 Chapter1 | 大数据技术与应用概述

    下面是一些机构的定义: 维基百科: 传统数据处理应用软件不足以处理的大型而复杂的数据集; 包含的数据大小超过了传统软件在可接受时间内处理的能力。 互联网...

    不温卜火
  • 数据清洗 Chapter01 | 数据清洗概况

    这篇文章讲述的是数据存储方式和数据类型等基本概念、数据清洗的必要性和质量评价的关键点。希望这篇数据清洗的文章对您有所帮助!如果您有想学习的知识或建议,可以给作者...

    不温卜火
  • Kylin快速入门系列(2) | Kylin的快速入门

    不温卜火
  • 如何使用PyMysql操作MySQL数据库?

    最近刷短视频经常看到python广告,有句广告词是:你要悄悄学Python,然后惊艳所有人。这几年确实Python大火,它在数据分析、人工智能、自动化运维、网络...

    MySQL数据库技术栈
  • 云时代数据库的核心特点

    最近几年,随着云计算相关技术的发展,各种不同类型的云层出不穷,服务越来越多不同类型的企业业务,传统企业也渐渐开始探索上云的道路。在云上,作为业务最核心的数据库,...

    PingCAP
  • python3版本mysql的操作

             conn=pymysql.connect("localhost","root”,“密码”,“数据库名”) #打开数据库          连接...

    py3study
  • 基于 Laravel Prequel 扩展包通过 Web 界面管理 MySQL 数据库

    Laravel Prequel 是一个数据库管理工具,可以在某个 Laravel 项目中安装该扩展包,从而实现对数据库的在线管理,这样一来就可以通过它替代掉那些...

    猿哥
  • 10. SpringCloud实战项目-微服务划分图

    SQL文件在这个项目里面:https://github.com/Jackson0714/PassJava-Platform.git

    悟空聊架构
  • 11. SpringCloud实战项目-初始化数据库和表

    SQL文件在这个项目里面:https://github.com/Jackson0714/PassJava-Platform.git

    悟空聊架构
  • 给数据库减负的八个思路

    传统的企业级应用,其实很少会有海量应用,因为企业的规模本身就摆在那里,能有多少数据?高并发?海量数据?不存在的!

    江南一点雨

扫码关注云+社区

领取腾讯云代金券