• 爬虫与Python:(四)爬虫进阶二之数据存储(数据库存储)——5.MySQL存储


    当数据量大,并且需要使用数据进行后期操作时,需要用到数据库。下面讲解在Python中使用MySQL 存储。

    MySQL 数据库安装

    详见官方文档或:https://www.cnblogs.com/luyj00436/p/15476678.html

    MySQL 数据驱动安装

    mysql-connector是MySQL 官方提供的驱动器,使用它可以连接MySQL .用户可以使用pip命令来安装mysql-connector。

    python -m pip install mysql-connector

    运行以下代码测试mysql-connector是否安装成功,如果没有产生错误,则表示安装成功。

    import mysql.connector

    1. 创建数据库连接

    要操作数据库,首先要获取数据库连接。使用mysql-connector获取到MySQL数据库连接示例代码如下:

     1 import mysql.connector
     2 
     3 # 连接数据库
     4 mydb = mysql.connector.connect(
     5     host="localhost",   # 数据库主机地址
     6     user="root",        # 数据库用户名
     7     passwd="123456",    # 数据库密码
     8     database="test_db", # 连接数据库名称
     9 )
    10 print(mydb)

    2. 插入数据

    接下来,我们需要插入数据。假设数据库中已存在一张名为"test_01"的表,并且包含id、name和age这3个字段,在其中插入一条测试数据。

     1 import mysql.connector
     2 
     3 # 插入测试数据
     4 mydb = mysql.connector.connect(
     5     host="localhost",   # 数据库主机地址
     6     user="root",        # 数据库用户名
     7     passwd="123456",    # 数据库密码
     8     database="test_db", # 连接数据库名称
     9 )
    10 mycursor = mydb.cursor()
    11 
    12 sql = "INSERT INTO test_01(id,name,age) VALUES(%s,%s,%s)"
    13 val = (1,"张三",23)
    14 mycursor.execute(sql ,val)
    15 mydb.commit() # 提交事务。数据表内容已经有更新,必须用到该语句。
    16 print(mycursor.rowcount,"记录插入成功")

    通过数据库客户端连接连接工具观察,发现已经插入了数据。

    3. 批量插入

    在实际开发中,往往爬虫每次获取到的数据都是几十条或上百条,所以这时如果向数据库中插入数据或涉及批量插入的问题——即只连接数据库一次,然后循环执行,知道完成所有插入语句再调用commit方法提交。这样做可以节省数据库开销和提升插入熟读,其示例代码如下。

     1 import mysql.connector
     2 
     3 mydb = mysql.connector.connect(
     4     host="localhost",
     5     user="root",
     6     passwd="123456",
     7     database="test_db",
     8 )
     9 mycursor = mydb.cursor()
    10 
    11 sql = "INSERT INTO test_01(id,name,age) VALUES(%s,%s,%s)"
    12 val = [
    13     (2,"张三",12),
    14     (3,"李四",12),
    15     (4,"王五",12),
    16     (5,"赵六",12),
    17 ]
    18 mycursor.executemany(sql ,val)
    19 mydb.commit() # 提交事务。数据表内容已经有更新,必须用到该语句。
    20 print(mycursor.rowcount,"记录插入成功")

    运行以上代码后,就会发现数据库中已经成功地插入了4条记录。

    4. 查询数据

    使用最频繁的还是查询。在以下查询示例中,执行fetchall()方法来获取所有返回结果。

     1 import mysql.connector
     2 
     3 # 查询数据
     4 mydb = mysql.connector.connect(
     5     host="localhost",
     6     user="root",
     7     passwd="123456",
     8     database="test_db",
     9 )
    10 mycursor = mydb.cursor()
    11 
    12 sql = "SELECT * FROM test_01"
    13 mycursor.execute(sql )
    14 myresult = mycursor.fetchall()  # fetchall()获取所有记录
    15 
    16 for x in myresult:
    17     print(x)

    运行后控制台输出返回结果:

    5. 更新数据库

    调用更新数据与插入数据的方法是一样的,只是sql语句不同而已。例如,下面的示例更新“test_01”表id为1的数据。

     1 import mysql.connector
     2 
     3 # 更新数据
     4 mydb = mysql.connector.connect(
     5     host="localhost",
     6     user="root",
     7     passwd="123456",
     8     database="test_db",
     9 )
    10 mycursor = mydb.cursor()
    11 
    12 sql = "UPDATE test_01 SET name='测试' WHERE id = 1"
    13 mycursor.execute(sql)
    14 mydb.commit()
    15 
    16 print(mycursor.rowcount ,"条记录被修改")

    运行以上代码后,发现数据库中数据已经成功修改。

    除了使用mysql-connector库连接操作MySQL数据库外,还可以使用PyMySQL库。该库使用方法mysql-connect类似,同样也可以通过pip命令安装。命令为 pip3 install PyMySQL

    有志者,事竟成,破釜沉舟,百二秦关终属楚; 苦心人,天不负,卧薪尝胆,三千越甲可吞吴。
  • 相关阅读:
    cogs 1272. [AHOI2009] 行星序列
    1027. 打印沙漏(20)
    1026. 程序运行时间(15)
    1023. 组个最小数 (20)
    《C语言程序设计(第四版)》阅读心得(四 文件操作)
    1022. D进制的A+B (20)
    1021. 个位数统计 (15)
    1020. 月饼 (25)
    1015. 德才论 (25)
    1009. 说反话 (20)
  • 原文地址:https://www.cnblogs.com/luyj00436/p/15434349.html
Copyright © 2020-2023  润新知