peewee mysql_scrapy中利用peewee插入Mysql

前两天老大布置一个任务,说爬下来的数据要存入数据库中,丢给我一个peewee,说用这个。当时的我两眼一抹黑,这是个什么东西呀,我知道scrapy的数据存入数据库是在pipelines中进行设置但是peewee是什么东西呢。经过两天不懈的努力,终于呀成功了

peewee

peewee 是一款数据库 ORM 库,可以很方便的帮你把对象和数据库表进行映射,从而让你不用写一句 SQL 就能操作数据库,我们爬到的数据需要写到 mysql 数据库中。

这句话就是说当我们数据库设置好字段时,可以通过这个库直接生成一个包含数据库表的所有字段和字段的各种设置

4fa5f2b487f9

数据库表字段

peewee可以用一条命令生成关于该数据库表的字段设置

从现有数据库生成相应的模块,使用pwiz实现

python -m pwiz -e mysql -H localhost -u root -P root user > md.py

python3 -m pwiz -e mysql(数据库) -H 服务器名 -p 端口号 -u 用户名 -P 密码 数据库名称 > 生成文件名

生成文件

from peewee import *

database = MySQLDatabase('user', **{'host': 'localhost', 'password': 'root', 'user': 'root'})

class UnknownField(object):

def __init__(self, *_, **__): pass

class BaseModel(Model):

class Meta:

database = database

class Art(BaseModel):

inc = TextField()

top = TextField()

m5d = CharField(index=True, null=True)

wfrm = TextField(null=True)

html = CharField()

class Meta:

db_table = 'db'

indexes = (

((''inc'), False),

(('wfrm'), False),

)

model与fields

对应关系:

在peewee中,一个继承model类的类定义为某个数据库的一个表格,如上面我们的art表就是继承baseModel类。类中的field为数据库中的列(字段)

OK,生成db.py后放在scrapy中与pilelines同一级目录下

pipelines

在pileline中引入该文件(不要忘了db文件前还有一个".")

from .db import Art

pipelines中我定义了两个类,一个类用于把数据输出为json格式,一个类用于把数据保存到数据库中

import codecs

import json

class WccPlaPipeline(object):

def __init__(self):

self.file = codecs.open("保存的文件名.json","wb",encoding="utf-8")

#这个方法必须返回一个Item对象,参数item:被爬取的item

#spider爬取该item的spider

def process_item(self, item, spider):

#打开JSON文件,向里面以dumps的方式吸入数据,

#其中ensure_ascii=False,不然数据会直接为utf编码的方式存入

line = json.dumps(dict(item),ensure_ascii=False)+'\n'

self.file.write(line)

return item

class MysqlPipeline(object):

def process_item(self,item,spider):

if Art.table_exists() == False:

Art.create_table()

data = Art(title=item['title'],text=item['text'])

data.save()

return item

json文件和自编写的spider在同一级目录下,这里我只用了peewee的插入语句,对其他语句感兴趣的小伙伴可以自行百度哦

settings的设置

由于pipelines中定义了两个类,所以要在settings中给这两个类设置一个执行的优先级顺序

ITEM_PIPELINES = {

'项目名.pipelines.MysqlPipeline': 300,

'项目名.pipelines.Pipeline': 100,

}

这样就可以执行scrapy啦

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/536938.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Java版数据结构与算法——线性表

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

基于 CODING 的 Spring Boot 持续集成项目

本文作者:CODING 用户 - 廖石荣 持续集成的概念 持续集成(Continuous integration,简称 CI)是一种软件开发实践,即团队开发成员经常集成他们的工作,通常每个成员每天至少集成一次,也就意味着每天可能会发生多次集成。每…

lvs mysql 端口_LVS配置及多端口服务配置

一、5、各主机IP地址:主机IP网关Client192.168.86.116RouterF0/0:192.168.x.xFo/1:192.168.xx.xxF0/1DirectorEth0:192.168.86.111/24(DIP)Eth0:1:192.168.86.254/32(VIP)F0/1Real 1Eth0:192.168.86.112/24(DIP)lo:1:192.168.86.254/32(VIP)F0/1Real 2Eth0:192.168.…

Mybatis组成部分

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

Stream流与Lambda表达式(一) 杂谈

一、流 转换为数组、集合 package com.java.design.java8.Stream;import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframework.test.context.junit4.SpringRunner;import java.util.A…

一年java工作经验-面试总结

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

linux mysql python包_03_mysql-python模块, linux环境下python2,python3的

---恢复内容开始---1、Python2 正常[rootIP ~]#pip install mysql-pythonDEPRECATION: Python 2.7 will reach the end of its life on January 1st, 2020. Please upgrade your Python as Python 2.7 wont be maintained after that date. A future version of pip will drop …

我的这套VuePress主题你熟悉吧

最近熬了很多个夜晚, 踩坑无数, 终于写出了用VuePress驱动的主题. 只需体验三分钟,你就会跟我一样,爱上这款主题. vuepress-theme-indigo-material, 已经发布到npm, 请客官享用~~ 介绍 vuepress-theme-indigo-material 的原主题是hexo-theme-indigo, git…

两年Java工作经验应该会些什么技术

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

centos 6 mysql 5.7.13 编译安装_Centos 6.5 下面 源码编译 安装 Mysql 5.7.13

安装软件依赖包yum -y install gcc gcc-c ncurses ncurses-devel cmake下载软件包cd /usr/local/srcwget https://downloads.mysql.com/archives/get/file/mysql-5.7.13.tar.gz --no-check-certificate下载 boost 库,MySQL 5.7.5 开始Boost库是必需的cd /usr/loca…

LeetCode 237. 删除链表中的节点(Python3)

题目: 请编写一个函数,使其可以删除某个链表中给定的(非末尾)节点,你将只被给定要求被删除的节点。 现有一个链表 -- head [4,5,1,9],它可以表示为: 示例 1: 输入: head [4,5,1,9], node 5 输出: [4,1,9…

使用Uniapp随手记录知识点

使用uniapp随手记录知识点 1 组件内置组件扩展组件 2 vuex状态管理使用流程mapState 辅助函数gettersMutation 1 组件 内置组件 内置组件内主要包含一些基础的view button video scroll-view等内置基础组件,满足基础场景 扩展组件 扩展组件是uniapp封装了一些成…

一年Java经验应该会些什么

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

mysql查询各类课程的总学分_基于jsp+mysql的JSP学生选课信息管理系统

运行环境: 最好是java jdk 1.8,我们在这个平台上运行的。其他版本理论上也可以。IDE环境: Eclipse,Myeclipse,IDEA都可以硬件环境: windows 7/8/10 2G内存以上(推荐4G,4G以上更好)可以实现: 学生,教师角色的…

80端口占用分析

SQL Server 2008 里面的组件——SQL Server Reporting Services (MSSQLSERVER)。是 SQL Server 的日志系统,就是他好端端的突然占用了80端口,而且对于普通人来讲,这个组件的作用没啥用,关掉也是节约资源。 关闭服务 ReportServer …

三年java经验应该会什么?

*************************************优雅的分割线 ********************************** 分享一波:程序员赚外快-必看的巅峰干货 如果以上内容对你觉得有用,并想获取更多的赚钱方式和免费的技术教程 请关注微信公众号:HB荷包 一个能让你学习技术和赚钱方法的公众号,持续更…

python call agilent com_PyVISA通过RS232(USB)与安捷伦34970A通信时出现超时错误

这是我第一次尝试使用Pyvisa,以便使用RS232连接(使用USB端口)与Agilent 34970A进行通信。在这就是发生在我身上的事情,插入基本的第一行:IN: import visaIN: rmvisa.ResourceManager()IN: print rm.list_resources()(uASRL4::INSTR,)IN: inst…

python加法运算符可以用来连接字符串并生成新字符串_中国大学MOOCPython语言入门网课答案...

中国大学MOOCPython语言入门网课答案表达式int(40.5)的值为____________。表达式160.5的值为____________________。python程序只能使用源代码进行运行,不能打包成可执行文件。python语句list(range(1,10,3))执行结果为___________________。pip命令也支持扩展名为.…

全是满满的技术文档

*************************************话不多说-先上教程 ********************************** 完整躺赚教程(不需任何技术,照做就能赚钱):点击此处获取 提取码&#xff1a;6666 被动收入教程(需要一定的技术,会搭建服务器,会发布项目<教程里面会教你>):点击此处获取 提…

JavaScript面试的完美指南(开发者视角)

2019独角兽企业重金招聘Python工程师标准>>> 摘要&#xff1a; 面试季手册。 原文&#xff1a;javascript 面试的完美指南(开发者视角)作者&#xff1a;前端小智Fundebug经授权转载&#xff0c;版权归原作者所有。 为了说明 JS 面试的复杂性&#xff0c;首先&#x…