国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

香港云服务器
服務器之家 - 腳本之家 - Python - Python中Scrapy+adbapi提高數據庫寫入效率實現

Python中Scrapy+adbapi提高數據庫寫入效率實現

2022-02-14 20:31許進進 Python

本文主要介紹了Python中Scrapy+adbapi提高數據庫寫入效率實現,文中通過示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下

一:twisted中的adbapi

?       數據庫pymysql的commit()和execute()在提交數據時,都是同步提交至數據庫,由于scrapy框架數據的解析和異步多線程的,所以scrapy的數據解析速度,要遠高于數據的寫入數據庫的速度。如果數據寫入過慢,會造成數據庫寫入的阻塞,影響數據庫寫入的效率。
使用twisted異步IO框架,實現數據的異步寫入,通過多線程異步的形式對數據進行寫入,可以提高數據的寫入速度。

1.1 兩個主要方法

adbapi.ConnectionPool:

創建一個數據庫連接池對象,其中包括多個連接對象,每個連接對象在獨立的線程中工作。adbapi只是提供了異步訪問數據庫的編程框架,再其內部依然使MySQLdb這樣的庫訪問數據庫。

dbpool.runInteraction(do_insert,item):

異步調用do_insert函數,dbpool會選擇連接池中的一個連接對象在獨立線程中調用insert_db,其中參數item會被傳給do_insert的第二個參數,傳給do_insert的第一個參數是一個Transaction對象,其接口與Cursor對象類似,可以調用execute方法執行SQL語句,do_insert執行后,連接對象會自動調用commit方法

1.2 使用實例

?
1
from twisted.enterprise import adbapi
?
1
2
3
4
# 初始化數據庫連接池(線程池)
# 參數一:mysql的驅動
# 參數二:連接mysql的配置信息
dbpool = adbapi.ConnectionPool('pymysql', **params)
?
1
2
3
# 參數1:在異步任務中要執行的函數insert_db;
# 參數2:給該函數insert_db傳遞的參數
query = self.dbpool.runInteraction(self.do_insert, item)
?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 在execute()之后,不需要再進行commit(),連接池內部會進行提交的操作。
def do_insert(self, cursor, item):
    insert_sql = """
            insert into qa_sample(
            need_id,
            need_question_uptime,
            need_title,
            need_title_describe,
            need_answer_uptime,
            need_answer)
            values (%s, %s, %s, %s, %s, %s)
            """
    params = (item['need_id'],
              item['need_question_uptime'],
              item['need_title'],
              item['need_title_describe'],
              item['need_answer_uptime'],
              item['need_answer'])
    cursor.execute(insert_sql, params)

二:結合scrapy中的pipelines

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
# -*- coding: utf-8 -*-
from twisted.enterprise import adbapi
import pymysql
 
# Define your item pipelines here
#
# Don't forget to add your pipeline to the ITEM_PIPELINES setting
# See: https://docs.scrapy.org/en/latest/topics/item-pipeline.html
 
 
class QaSpiderPipeline(object):
    def process_item(self, item, spider):
        return item
 
class MysqlTwistedPipeline(object):
    def __init__(self, dbpool):
        self.dbpool = dbpool
 
    @classmethod
    def from_settings(cls, settings):
        dbparams = dict(
            host=settings['MYSQL_HOST'],
            db=settings['MYSQL_DBNAME'],
            user=settings['MYSQL_USER'],
            passwd=settings['MYSQL_PASSWORD'],
            charset='utf8',
            cursorclass=pymysql.cursors.DictCursor,
            use_unicode=True
        )
        dbpool = adbapi.ConnectionPool('pymysql', **dbparams)
        return cls(dbpool)
 
    def process_item(self, item, spider):
        query = self.dbpool.runInteraction(self.do_insert, item)
 
    def do_insert(self, cursor, item):
        insert_sql = """
                insert into qa_sample(
                need_id,
                need_question_uptime,
                need_title,
                need_title_describe,
                need_answer_uptime,
                need_answer)
                values (%s, %s, %s, %s, %s, %s)
                """
        params = (item['need_id'],
                  item['need_question_uptime'],
                  item['need_title'],
                  item['need_title_describe'],
                  item['need_answer_uptime'],
                  item['need_answer'])
        cursor.execute(insert_sql, params)

到此這篇關于Python中Scrapy+adbapi提高數據庫寫入效率實現的文章就介紹到這了,更多相關Scrapy+adbapi數據庫寫入內容請搜索服務器之家以前的文章或繼續瀏覽下面的相關文章希望大家以后多多支持服務器之家!

原文鏈接:https://juejin.cn/post/7021024993500725256

延伸 · 閱讀

精彩推薦
1088
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 91久久国产综合久久91精品网站 | 亚洲精品成人av | 日韩欧美成人影院 | 久久精品国产99精品国产亚洲性色 | 久久视频免费 | 欧美日韩a| 欧美一区二区三区在线观看视频 | 在线国产一区 | 成人h漫在线观看 | 精品国产乱码久久久久久丨区2区 | 少妇精品久久久久久久久久 | 激情国产精品 | 国产精品一区二区三区在线播放 | caoporn视频| 国产精品成人一区二区三区 | 一道本一区二区三区 | 国产综合精品一区二区三区 | 欧美日本高清 | 免费视频一区 | 日韩在线视频免费观看 | 精品亚洲成a人在线观看 | 激情综合五月天 | 在线一区观看 | 黄色片网站在线免费观看 | 九九综合九九 | 国产精品久久久久久a | 淫片在线观看 | 黄色毛片三级 | 日韩电影在线看 | 国产免费成人 | 国产视频二区 | 99这里只有精品视频 | 91精品国产91久久久久久最新 | 成人免费视频网站在线看 | 久久久亚洲国产美女国产盗摄 | 国产精品免费视频观看 | 91国内外精品自在线播放 | 精品国产乱码久久久久久丨区2区 | 男人天堂网址 | 中文字幕日韩欧美一区二区三区 | 超碰国产在线 |