scrapy 保存mysql_scrapy使用mysql保存数据

本文介绍了如何在Scrapy中使用pymysql和adbapi实现异步保存数据到MySQL数据库,包括数据库配置、Item Pipeline设置以及处理异常的方法。
摘要由CSDN通过智能技术生成

scrapy使用mysql保存数据

龙行    Python    2019-8-25    1476    0评论

#安装pymysql   pip install pymysql

# 引入pymysql

# 数据库配置在settings.py

# MYSQL_HOST = "127.0.0.1"

# MYSQL_DBNAME = "test"

# MYSQL_USER = "root"

# MYSQL_PASSWORD = "root"

import pymysql

from twisted.enterprise import adbapi

# settings.py item配置

# ITEM_PIPELINES = {

#    # 'cnblog.pipelines.CnblogPipeline': 300,

#    'cnblog.pipelines.MysqlTwistedPipeline': 1,

# }

# 异步进入数据库

class MysqlTwistedPipeline(object):

def __init__(self, dbpool):

self.dbpool = dbpool

@classmethod

def from_settings(cls, settings):

# 获取settings文件中的配置

dbparms=dict(

host=settings['MYSQL_HOST'],

db=settings['MYSQL_DBNAME'],

user=settings['MYSQL_USER'],

passwd=settings['MYSQL_PASSWORD'],

charset='utf8',

cursorclass=pymysql.cursors.DictCursor,

use_unicode=True,

)

# 使用Twisted中的adbapi获取数据库连接池对象

dbpool = adbapi.ConnectionPool("pymysql", **dbparms)

return cls(dbpool)

def process_item(self,item, spider):

# 使用teisted讲mysql插入变成异步执行

# 使用数据库连接池对象进行数据库操作,自动传递cursor对象到第一个参数

query = self.dbpool.runInteraction(self.do_insert, item)

# 设置出错时的回调方法,自动传递出错消息对象failure到第一个参数

query.addErrback(self.handle_error, item, spider) #处理异常

def handle_error(self, failure, item, spider):

# 处理异步插入的异常

print(failure)

def do_insert(self, cursor, item):

#执行具体的插入

insert_sql = """

insert into te(title, `time`)

values (%s, %s)

"""

cursor.execute(insert_sql, (item["title"],  item["time"]))

评论一下

赞助站长

赞助站长X

版权申明:此文如未标注转载均为本站原创,自由转载请表明出处《龙行博客》。

本文网址:https://www.liaotaoo.cn/281.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值