
scrapy 中使用管道存储数据时遇到的问题及解决方法
在使用 scrapy 时,不少开发者在使用管道存储数据时会遇到问题。比如,尝试使用数据库存储数据时遇到报错。本文将针对此问题进行分析,并提供相应的解决方案。
以下是一段遇到此问题的代码示例:
import pymysqlclass 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 pymysqlclass 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’`错误,如何解决?的详细内容,更多请关注创想鸟其它相关文章!
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/1352179.html
微信扫一扫
支付宝扫一扫