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.pswp.cn/news/536938.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/536938.shtml
英文地址,請注明出處:http://en.pswp.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…