登录
首页 >  文章 >  python教程

Scrapy 管道中连接数据库时出现`AttributeError: 'mysqlPipeline' object has no attribute 'opens_spider'`错误,如何解决?

时间:2024-12-01 13:43:00 240浏览 收藏

大家好,今天本人给大家带来文章《Scrapy 管道中连接数据库时出现`AttributeError: 'mysqlPipeline' object has no attribute 'opens_spider'`错误,如何解决?》,文中内容主要涉及到,如果你对文章方面的知识点感兴趣,那就请各位朋友继续看下去吧~希望能真正帮到你们,谢谢!

Scrapy 管道中连接数据库时出现`AttributeError: 'mysqlPipeline' object has no attribute 'opens_spider'`错误,如何解决?

scrapy 中使用管道存储数据时遇到的问题及解决方法

在使用 scrapy 时,不少开发者在使用管道存储数据时会遇到问题。比如,尝试使用数据库存储数据时遇到报错。本文将针对此问题进行分析,并提供相应的解决方案。

以下是一段遇到此问题的代码示例:

import pymysql

class mysqlpipeline(object):
    conn = none
    cursor = none

    # 连接数据库
    def opens_spider(self, spider):
        self.conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='test',charset='utf8')

    def process_item(self, item, spider):
        self.cursor = self.conn.cursor()
        try:
            self.cursor.execute('insert into qiubai values("%s","%s")' % (item["author"], item["content"]))
            self.conn.commit()
        except exception as e:
            print(e)
            self.conn.rollback()  # 回滚
        return item

    def close_spider(self, spider):
        self.cursor.close()
        self.conn.close()

报错信息如下:

attributeerror: 'mysqlpipeline' object has no attribute 'opens_spider'

问题原因

从报错信息可以看出,问题出在 opens_spider 方法上。事实上,对于 scrapy 来说,管道内用于连接数据库的方法固定为 open_spider,而非 opens_spider。

解决方案

只需将 opens_spider 修改为 open_spider 即可解决问题。

修改后的代码如下:

import pymysql

class mysqlPipeline(object):
    conn = None
    cursor = None

    # 连接数据库
    def open_spider(self, spider):
        self.conn = pymysql.Connect(host='127.0.0.1', port=3306, user='root', password='123456', db='test',charset='utf8')

    def process_item(self, item, spider):
        ...

    def close_spider(self, spider):
        ...

本篇关于《Scrapy 管道中连接数据库时出现`AttributeError: 'mysqlPipeline' object has no attribute 'opens_spider'`错误,如何解决?》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于文章的相关知识,请关注golang学习网公众号!

相关阅读
更多>
最新阅读
更多>
课程推荐
更多>