日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

peewee mysql_scrapy中利用peewee插入Mysql

發布時間:2025/3/8 数据库 29 豆豆
生活随笔 收集整理的這篇文章主要介紹了 peewee mysql_scrapy中利用peewee插入Mysql 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前兩天老大布置一個任務,說爬下來的數據要存入數據庫中,丟給我一個peewee,說用這個。當時的我兩眼一抹黑,這是個什么東西呀,我知道scrapy的數據存入數據庫是在pipelines中進行設置但是peewee是什么東西呢。經過兩天不懈的努力,終于呀成功了

peewee

peewee 是一款數據庫 ORM 庫,可以很方便的幫你把對象和數據庫表進行映射,從而讓你不用寫一句 SQL 就能操作數據庫,我們爬到的數據需要寫到 mysql 數據庫中。

這句話就是說當我們數據庫設置好字段時,可以通過這個庫直接生成一個包含數據庫表的所有字段和字段的各種設置

數據庫表字段

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啦

總結

以上是生活随笔為你收集整理的peewee mysql_scrapy中利用peewee插入Mysql的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。