• python爬虫26 | 把数据爬取下来之后就存储到你的MySQL数据库。


     

    小帅b说过

     

    在这几篇中会着重说说将爬取下来的数据进行存储

     

    上次我们说了一种 csv 的存储方式

     

    这次主要来说说怎么将爬取下来的数据保存到 MySQL 数据库

     

    接下来就是

     

    学习python的正确姿势

     

     

    真香假设

     

    本文假设你已经安装好MySQL

     

    并且懂了一些 MySQL 的使用

     

    例如简单“增删改查”的语句

     

    如果你还没安装 MySQL

     

    可以到以下链接去安装一下

     

    https://www.mysql.com/downloads/

     

     

     

    在你的 MySQL 中创建一个数据库吧

     

    就叫...

     

    AV-Idol

     

    用 root 的身份进入你的 MySQL

    sudo mysql -u root -p

     

    输入 MySQL 的用户名密码之后

     

    就可以开始操作 MySQL 啦

     

    我们来创建一个数据库

     

    如果 avIdol 这个数据库不存在于我们的 MySQL 里面

     

    那就创建一个出来

    mysql> create database if not exists avIdol;Query OK, 1 row affected (0.01 sec)

     

    这样

     

    我们就创建出一个数据库了

     

     

     

     

    接下来

     

    我们就使用 python 来操作这个数据库吧

     

    我们需要使用到 pymysql 这个库

     

    专门用来操作 MySQL 的

     

    可以用 pip 安装一下

     

     pip install pymysql

     

    接下来我们就连接到我们刚刚创建的数据库

     

    然后在这个数据库里面创建一张 beautyGirls 

     

    专门用来存放漂亮美眉的信息

     

    import pymysql
    # 使用 connect 方法,传入数据库地址,账号密码,数据库名就可以得到你的数据库对象db = pymysql.connect("你的数据库地址", "数据库账号", "数据库密码", "avIdol")
    # 接着我们获取 cursor 来操作我们的 avIdol 这个数据库cursor = db.cursor()
    # 比如我们来创建一张数据表sql = """create table beautyGirls ( name char(20) not null, age int)"""cursor.execute(sql)
    # 最后我们关闭这个数据库的连接db.close()

     

    运行一下

     

    没报什么错就说明我们成功创建数据表了

     

    我们回到数据库看下是否创建成功

     

     

    通过 show tables

     

    可以看到我们数据库成功创建了 beautyGirls 这张婊,哦不,表

     

    通过 show full columns from beautyGirls;

     

    可以看到我们在这张表中创建了 name 和 age 这两个字段

     

     

    有了数据库和数据表了

     

    那么接下来我们就往数据库插入数据看看

     

    import pymysql
    # 使用 connect 方法,传入数据库地址,账号密码,数据库名就可以得到你的数据库对象db = pymysql.connect("localhost", "root", "root", "avIdol")
    # 接着我们获取 cursor 来操作我们的 avIdol 这个数据库cursor = db.cursor()
    # 插入一条记录sql = "insert into beautyGirls(name, age) values ('Mrs.cang', 18)"
    try: cursor.execute(sql) db.commit()except: # 回滚 db.rollback()
    # 最后我们关闭这个数据库的连接db.close()

     

     

    再来数据库查询一下这张表

     

     

    可以看到

     

    苍老师的数据就被我们插进来了

     

     

    当你使用 pymysql 对数据进行更新的时候

     

    记得调用 

     

    db.commit()

     

    这样才会执行到哦

     

    知道如何创建数据表、插入数据

     

    那么对于更新数据以及删除数据

     

    也是同样的道理

     

    只是 sql 语句不同而已

     

    比如删除 18 岁的苍老师

     

    sql = "delete from beautyGirls where age = '%d'" % (18)try:   cursor.execute(sql)   db.commit()except:   db.rollback()

     

    可能你在操作数据库的时候

     

    做一些数据的更新或者添加

     

    有些数据在添加过程可能出现异常

     

    为了让我们的数据能够完全的添加

     

    可以使用 

     

    db.rollback()

     

    回滚操作

     

    这样才能让我们的事务具有一致性

     

     

    当然

     

    我们也可以将 csv 中的内容插入到 MySQL 中

     

    就拿上次我们生成的 xsb.csv 文件来说

     

     

    我们把这里面的内容插到 xsb 数据库吧

     

    还是一样,我们来创建一个叫做 xsb 的数据库

     

    并且把字符集设置为 UFT-8 ,防止中文乱码

     

    mysql> CREATE DATABASE xsb CHARACTER SET utf8 COLLATE utf8_general_ci;

     

    接着创张帅b表

     

    mysql> CREATE TABLE xsb (name char(20), age char(20), length char(20));Query OK, 0 rows affected (0.34 sec)

     

    回到代码来

     

    这次我们安装一下 mysql 的 python 客户端

     

    pip install mysqlclient 

     

    使用 sqlalchemy 来连接我们的数据库

     

    然后就可以使用代码将 csv 文件的内容插到 xsb 这张表了

     

    import pandas as pdfrom sqlalchemy import create_engine
    df = pd.read_csv('xsb.csv')
    # 当engine连接的时候我们就插入数据engine = create_engine('mysql://root@localhost/xsb?charset=utf8')with engine.connect() as conn, conn.begin(): df.to_sql('xsb', conn, if_exists='replace')

     

    运行一下

     

    然后打开我们刚刚创建的 xsb 数据库查询一下

     

     

    可以看到

     

    我们就将 csv 中的内容插入到数据库啦

     

     

    ok

     

    以上就是使用 python 操作数据库的具体操作

     

    以后小帅b在爬虫项目例子中还会提及 MySQL 

     

    那么

     

    我们下回见

     

    peace

     

  • 相关阅读:
    ole辅助类sqlhelperaccess
    Asp.net中常用的26个性能优化方法
    MVP模式的相关知识
    ASP.NET AJAX入门系列
    非常实用]Asp.net常用的51个代码
    一步一步学Silverlight 系列文章
    .NET设计模式系列文章
    Asp.net添加上传进度条
    asp.net 用ajax实现文件上传
    增加弹出层的拖拽功能
  • 原文地址:https://www.cnblogs.com/fxxkpython/p/10832408.html
Copyright © 2020-2023  润新知