爬虫文件存储-1:mysql

1.连接并创建数据库

import pymysql

db = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘root‘, port=3306)
cursor = db.cursor()
cursor.execute(‘SELECT VERSION()‘)
data = cursor.fetchone()
print(‘Database version:‘, data)
cursor.execute("CREATE DATABASE spiders DEFAULT CHARACTER SET utf8")
db.close()

执行结果:

Database version: (‘5.7.23‘,)

结果是创建一个名为spiders的数据库

2.创建数据表

注意:这次连接数据库时需要指定创建数据表所在的数据库,也就是db参数的值

import pymysql

db = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘root‘, port=3306, db=‘spiders‘)
cursor = db.cursor()

sql = ‘CREATE TABLE IF NOT EXISTS students (id VARCHAR(255) NOT NULL, name VARCHAR(255) NOT NULL, age INT NOT NULL, PRIMARY KEY (id))‘
cursor.execute(sql)
db.close()

3.插入一条数据

import pymysql

db = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘root‘, port=3306, db=‘spiders‘)
cursor = db.cursor()

id = ‘20120001‘
user = ‘Bob‘
age = 20

sql = ‘INSERT INTO students(id, name, age) values(%s, %s, %s)‘
try:
    cursor.execute(sql, (id, user, age))
    db.commit()
except:
    db.rollback()
db.close()

通用写法:

这样一来,若是写入更多值的话直接给data字典增加数据就行了,就不用其他sql语句了,推荐使用

import pymysql

db = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘root‘, port=3306, db=‘spiders‘)
cursor = db.cursor()

table = ‘students‘

data = {
    ‘id‘: ‘20120002‘,
    ‘name‘: ‘Bob11‘,
    ‘age‘: 200
}

keys = ‘, ‘.join(data.keys())
values = ‘, ‘.join([‘%s‘] * len(data))

sql = ‘INSERT INTO {table} ({keys}) VALUES ({values})‘.format(table=table, keys=keys, values=values)
try:
    if cursor.execute(sql, tuple(data.values())):
        print(‘Successful‘)
        db.commit()
except:
    print(‘Failed‘)
    db.rollback()
db.close()

4.更新数据

import pymysql

db = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘root‘, port=3306, db=‘spiders‘)
cursor = db.cursor()

sql = ‘UPDATE students SET age = %s WHERE name = %s‘
try:
   cursor.execute(sql, (25, ‘Bob‘))
   db.commit()
except:
   db.rollback()
db.close()

通用写法:

根据主键进行判断,若主键存在则更新,若不存在则插入,推荐使用

import pymysql

db = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘root‘, port=3306, db=‘spiders‘)
cursor = db.cursor()

table = ‘students‘

data = {
    ‘id‘: ‘20120001‘,
    ‘name‘: ‘Bob‘,
    ‘age‘: 21
}

keys = ‘, ‘.join(data.keys())
values = ‘, ‘.join([‘%s‘] * len(data))

sql = ‘INSERT INTO {table}({keys}) VALUES ({values}) ON DUPLICATE KEY UPDATE‘.format(table=table, keys=keys,
                                                                                     values=values)
update = ‘,‘.join([" {key} = %s".format(key=key) for key in data])
sql += update
try:
    if cursor.execute(sql, tuple(data.values()) * 2):
        print(‘Successful‘)
        db.commit()
except:
    print(‘Failed‘)
    db.rollback()
db.close()

5.删除数据

import pymysql

db = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘root‘, port=3306, db=‘spiders‘)
cursor = db.cursor()

table = ‘students‘
condition = ‘age > 20‘

sql = ‘DELETE FROM  {table} WHERE {condition}‘.format(table=table, condition=condition)
try:
    cursor.execute(sql)
    db.commit()
except:
    db.rollback()

db.close()

6.查询数据

import pymysql

db = pymysql.connect(host=‘localhost‘, user=‘root‘, password=‘root‘, port=3306, db=‘spiders‘)
cursor = db.cursor()

sql = ‘SELECT * FROM students WHERE age >= 20‘
try:
    cursor.execute(sql)
    print(‘Count:‘, cursor.rowcount)
    row = cursor.fetchone()
    while row:
        print(‘Row:‘, row)
        row = cursor.fetchone()
except:
    print(‘Error‘)

原文地址:https://www.cnblogs.com/sanduzxcvbnm/p/10335176.html

时间: 2024-08-30 15:28:38

爬虫文件存储-1:mysql的相关文章

Java读取文件存储到mysql

写了一批Lua脚本,要放到数据库里面,调用的时候进行计算,由于有太多lua脚本,就写了个程序来录入. 下面主要分三个部分: public static String readToString(String fileName) public static void wirteToMYSQL(String string) throws FileNotFoundException public static List<String> getFileList(String strPath) readT

爬虫文件存储-3:Redis

前提条件: 安装并运行redis服务端程序,安装RedisPy库 说明:Redis 是 StrictRedis 的子类,它的主要功能是用于向后兼容旧版本库里的几个方法,官方推荐使用 StrictRedis. 1.连接 # 方法1 from redis import StrictRedis redis = StrictRedis(host='localhost',port=6379,db=0,password='foobar2000') redis.set('name', 'Bob') print

爬虫文件存储-2:MongoDB

1.连接MongoDB 连接 MongoDB 我们需要使用 PyMongo 库里面的 MongoClient,一般来说传入 MongoDB 的 IP 及端口即可,第一个参数为地址 host,第二个参数为端口 port,端口如果不传默认是 27017. import pymongo client = pymongo.MongoClient(host='localhost', port=27017) # client = MongoClient('mongodb://localhost:27017/

[python爬虫] Selenium爬取内容并存储至MySQL数据库

前面我通过一篇文章讲述了如何爬取CSDN的博客摘要等信息.通常,在使用Selenium爬虫爬取数据后,需要存储在TXT文本中,但是这是很难进行数据处理和数据分析的.这篇文章主要讲述通过Selenium爬取我的个人博客信息,然后存储在数据库MySQL中,以便对数据进行分析,比如分析哪个时间段发表的博客多.结合WordCloud分析文章的主题.文章阅读量排名等.        这是一篇基础性的文章,希望对您有所帮助,如果文章中出现错误或不足之处,还请海涵.下一篇文章会简单讲解数据分析的过程. 一.

Python2爬虫获取的数据存储到MySQL中时报错&quot;Incorrect string value: &#39;\\xE6\\x96\\xB0\\xE9\\x97\\xBB&#39; for column &#39;new&#39; at row 1&quot;的解决办法

由于一直使用python3进行编码,在使用Python2时,将爬虫数据连接数据库进行存储时,出现如上的报错,经查资料 是数据库编码问题. 如下转自:http://www.cnblogs.com/liuzhixin/p/6274821.html 的博客,在此感谢博主的慷慨分享之情. 错误原因:我们可以看到错误提示中的字符0xF0 0x9F 0x98 0x84 ,这对应UTF-8编码格式中的4字节编码(UTF-8编码规范).正常的汉字一般不会超过3个字节,为什么为出现4个字节呢?实际上是它对应的是智

Class 15 - 1 数据存储——文件存储

保存的形式可以多种多样,最简单的形式是 接保存为文本文件,如 TXT.JSON.CSV等.还可以保存到数据库中,如关系型数据库 MySQL ,非关系型数据库 MongoDB.Redis等. 一.TXT文本存储  基本实例: 可以用 requests 将网页源代码获取下来,然后使用 pyquery 解析库解析,接下来将提取的标题. 回答者. 回答保存到文本,代码: import requests from pyquery import PyQuery as pq url = 'https://ww

PHP通过文件存储来实现缓存

PHP通过文件存储来实现缓存 在一些数据库数据记录较大,但是服务器有限的时候,可能一条MySQL查询就会好几百毫秒,一个简单的页面一般也有十几条查询,这个时候也个页面加载下来基本要好几秒了,如果并发量高的话服务器基本就瘫痪了,造成一个页面很久也加载不下来,这个时候我们可以使用文件缓存来缓解下MySQL的压力,下面给个使用例子. [php] view plaincopy <?php //页面业务逻辑处理,获得结果 $objPage = new Page_IndexModel($arrParams)

IOS开发--数据持久化篇之文件存储(一)

前言:个人觉得开发人员最大的悲哀莫过于懂得使用却不明白其中的原理.在代码之前我觉得还是有必要简单阐述下相关的一些知识点. 因为文章或深或浅总有适合的人群.若有朋友发现了其中不正确的观点还望多多指出,不胜感激. 什么叫数据持久化: 在这里我就不照搬教科书上抽象的概念了.我觉得既然要把东西写出来就让它简单明了. 要搞清楚数据持久化,首先要知道数据持久化是相对于缓存而言的,缓存是在程序运行的过程中保存在内存中,程序一旦运行结束,其内存就会被释放.缓存在内存中的数据也就随之消失. 那么数据持久化就是要解

webmagic自定义存储(mysql、redis存储)

在很多时候,我们使用webmagic爬取网站的时候,爬取的数据希望存储在mysql.redis中.因此需要对其扩展,实行自定义PipeLine.首先我们了解一下webmagic 的四个基本组件 一. WebMagic的四个组件 1.Downloader Downloader负责从互联网上下载页面,以便后续处理.WebMagic默认使用了HttpClient作为下载工具. 2.PageProcessor PageProcessor负责解析页面,抽取有用信息,以及发现新的链接.WebMagic使用J