最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

一文搞懂Scrapy與MongoDB交互過(guò)程

 更新時(shí)間:2022年07月08日 15:20:56   作者:依戀、陽(yáng)光  
這篇文章主要介紹了Scrapy與MongoDB交互過(guò)程,文末給大家介紹了類(lèi)方法@classmethod的相關(guān)知識(shí),需要的朋友可以參考下

Pipeline.py

class MongoDBPipeline:
    def __init__(self,conn,database):
        self.conn = conn
        self.database = database
    @classmethod
    def from_crawler(cls, crawler):
        return cls(
            conn=crawler.settings.get('MONGODB_CONNECTION_STRING'),
            database=crawler.settings.get('MONGODB_DATABASE')
        )
    def open_spider(self,spider):
        # 創(chuàng)建連接對(duì)象
        self.client = pymongo.MongoClient(self.conn)
        # 連接要用的使用的數(shù)據(jù)庫(kù)
        self.db = self.client[self.database]
    def process_item(self,item,spider):
        # 設(shè)置使用表名稱(chēng)
        name = item.__class__.__name__
        # 默認(rèn)item類(lèi)名
        self.db[name].insert_one(dict(item))
        return item
    def close_spider(self,spider):
        self.client.close()

PS:

1.不能用insert來(lái)插入數(shù)據(jù),PyMongo 4.0.* 中 Collection.insert 方法被移除,使用 Collection.insert_one 或者 Collection.insert_many 替代:

db[name].insert_one({'my': 'document'})
db[name].insert_many([{'doc': 2}, {'doc': 3}])

2.process_item一定要寫(xiě)return item,不然接收不了返回值。

3.open_spider, process_item, close_spider的名稱(chēng)和參數(shù)不能改變,因?yàn)檫@是重寫(xiě)類(lèi)方法。

setting.py

MONGODB_CONNECTION_STRING = '127.0.0.1'
MONGODB_DATABASE = 'test'

補(bǔ)充知識(shí)點(diǎn):類(lèi)方法@classmethod

類(lèi)方法也算一種實(shí)用的技巧,簡(jiǎn)單描述之:“類(lèi)方法讓類(lèi)模板具有記憶力”。

類(lèi)模板就是我們所定義的類(lèi)。在普通情況下,不使用類(lèi)方法對(duì)類(lèi)進(jìn)行實(shí)例化,類(lèi)本身是不具有記憶性的。只是當(dāng)一個(gè)靜態(tài)模板被套用多次而已。如果我們想讓類(lèi)在每一次實(shí)例化之后,都能記載一些記憶,是否會(huì)對(duì)很多操作很有用?

舉個(gè)例子:

class Man:
    id = 0 # 類(lèi)變量
    def __init__(self, name):
        self.name = name
        self.id = self.id_number()
    @classmethod
    def id_number(cls):
        cls.id += 1
        return cls.id
a = Man('A')
print(a.id)
b = Man('B')
print(b.id)

上面的輸出為:

1
2

我對(duì)Man這個(gè)類(lèi)進(jìn)行實(shí)例化2次,每個(gè)實(shí)例的id都不一樣。這就依靠類(lèi)方法來(lái)實(shí)現(xiàn)了:首先,用@classmethod描述類(lèi)方法,然后用"cls"代表本類(lèi)。類(lèi)方法對(duì)類(lèi)屬性進(jìn)行的處理是有記憶性的。

PS:類(lèi)方法處理的變量一定要是類(lèi)變量。因?yàn)樵陬?lèi)方法里你用不了self來(lái)尋址實(shí)例變量,所以需要把類(lèi)變量放到最前面描述,如上面的"id=0"所示。類(lèi)變量是可以被self訪(fǎng)問(wèn)的,所以,在類(lèi)變量定義好了以后,不需要在_init_函數(shù)里對(duì)類(lèi)變量再一次描述。所以,上面代碼里self.id不一定需要。

到此這篇關(guān)于Scrapy與MongoDB交互的文章就介紹到這了,更多相關(guān)Scrapy與MongoDB內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • 淺析MongoDB之安全認(rèn)證

    淺析MongoDB之安全認(rèn)證

    MongoDB是基于分布式文件存儲(chǔ)的數(shù)據(jù)庫(kù)。由C++語(yǔ)言編寫(xiě)。旨在為WEB應(yīng)用提供可擴(kuò)展的高性能數(shù)據(jù)存儲(chǔ)解決方案。默認(rèn)情況下,MongoDB實(shí)例啟動(dòng)運(yùn)行時(shí)是沒(méi)有啟用用戶(hù)訪(fǎng)問(wèn)權(quán)限控制的,在實(shí)例本機(jī)服務(wù)器上都可以隨意連接到實(shí)例進(jìn)行各種操作,MongoDB不會(huì)對(duì)連接客戶(hù)端進(jìn)行用戶(hù)驗(yàn)證
    2021-06-06
  • MongoDB的基本操作實(shí)例詳解【服務(wù)端啟動(dòng),客戶(hù)端連接,CRUD操作】

    MongoDB的基本操作實(shí)例詳解【服務(wù)端啟動(dòng),客戶(hù)端連接,CRUD操作】

    這篇文章主要介紹了MongoDB的基本操作,結(jié)合實(shí)例形式分析了MongoDB數(shù)據(jù)庫(kù)的服務(wù)端啟動(dòng),客戶(hù)端連接,CRUD操作等基本實(shí)現(xiàn)方法與操作注意事項(xiàng),需要的朋友可以參考下
    2020-04-04
  • MongoDB運(yùn)行日志實(shí)現(xiàn)自動(dòng)分割的方法實(shí)例

    MongoDB運(yùn)行日志實(shí)現(xiàn)自動(dòng)分割的方法實(shí)例

    這篇文章主要給大家介紹了關(guān)于MongoDB運(yùn)行日志實(shí)現(xiàn)自動(dòng)分割的方法,文中以一個(gè)MongoDB實(shí)例為例,寫(xiě)了一個(gè)腳本來(lái)實(shí)現(xiàn)自動(dòng)分割MongoDB日志,有需要的朋友可以參考借鑒,下面來(lái)一起看看吧。
    2017-01-01
  • MongoDB?Server?用戶(hù)名和密碼登錄的操作步驟

    MongoDB?Server?用戶(hù)名和密碼登錄的操作步驟

    MongoDB Server默認(rèn)不進(jìn)行安全認(rèn)證,即任何MongoDB Client都可以連接并擁有操作權(quán)限,這篇文章主要介紹了MongoDB?Server?用戶(hù)名和密碼登錄的步驟,需要的朋友可以參考下
    2024-03-03
  • 淺談MySQL和MariaDB區(qū)別(mariadb和mysql的性能比較)

    淺談MySQL和MariaDB區(qū)別(mariadb和mysql的性能比較)

    MariaDB的目的是完全兼容MySQL,包括API和命令行,使之能輕松成為MySQL的代替品
    2018-02-02
  • MongoDB 常用的crud操作語(yǔ)句

    MongoDB 常用的crud操作語(yǔ)句

    本篇介紹了 MongoDB 的基本 CRUD 操作,可以看到 MongoDB 的語(yǔ)法極其簡(jiǎn)潔,而且可以使用鏈?zhǔn)秸{(diào)用的方式進(jìn)行操作。操作的參數(shù)也很固定,且方法名稱(chēng)很明確,上手來(lái)說(shuō)是很容易的
    2021-06-06
  • mongo中模糊查詢(xún)的綜合應(yīng)用

    mongo中模糊查詢(xún)的綜合應(yīng)用

    這篇文章主要給大家介紹了關(guān)于mongo中模糊查詢(xún)的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用mongodb具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • MongoDB中文檔的更新操作示例詳解

    MongoDB中文檔的更新操作示例詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB中文檔的更新操作的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考借鑒,下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧。
    2017-11-11
  • 詳解MongoDB中創(chuàng)建集合與刪除集合的操作方法

    詳解MongoDB中創(chuàng)建集合與刪除集合的操作方法

    因?yàn)镸ongoDB屬于NoSQL,所以集合collection相當(dāng)于關(guān)系型數(shù)據(jù)庫(kù)中的表table,這里我們就來(lái)詳解MongoDB中創(chuàng)建集合與刪除集合的操作方法:
    2016-06-06
  • MongoDB中的定時(shí)索引示例詳解

    MongoDB中的定時(shí)索引示例詳解

    這篇文章主要給大家介紹了關(guān)于MongoDB中定時(shí)索引的相關(guān)資料,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家學(xué)習(xí)或者使用MongoDB具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08

最新評(píng)論

同江市| 阳曲县| 荔浦县| 利津县| 霞浦县| 建始县| 济南市| 和静县| 延安市| 淮北市| 江城| 马山县| 客服| 青阳县| 崇信县| 五河县| 山丹县| 鄯善县| 融水| 友谊县| 武平县| 大荔县| 璧山县| 安乡县| 平潭县| 武城县| 西青区| 古交市| 道孚县| 博爱县| 商丘市| 华亭县| 长丰县| 蓬安县| 阳西县| 汾西县| 澎湖县| 革吉县| 巨鹿县| 广昌县| 清新县|