python 通过异步存储到数据库 mysql

通过异步存储到数据库

from twisted.enterprise import adbapi

class MysqlTwistedPipline(object):

def __init__(self, dbpool):
    self.dbpool = dbpool
@classmethod
def from_settings(cls, settings):
    data_info = dict(
        password=settings['MYSQL_PASSWORD'],
        user=settings['MYSQL_USER'],
        database=settings['MYSQL_DATABASE'],
        host=settings['MYSQL_HOST'],
        charset='utf8',
        cursorclass=pymysql.cursors.DictCursor,
        use_unicode=True,
    )
    dbpool = adbapi.ConnectionPool('pymysql', **data_info)
    return cls(dbpool)

def process_item(self, item, spider):
    # 使用twisted将mysql变成异步插入
    query = self.dbpool.runInteraction(self.do_inster, item)
    query.addErrback(self.handle_err)  # 处理异常

def handle_err(self, failure):
    # 处理异步插入的异常
    print(failure)

def do_inster(self, cursor, item):
    insert_sql = '''
            insert into bole(title,date,url,md5_url)VALUES
            (%s,%s,%s,%s)
            '''
    cursor.execute(insert_sql, (item['title'], item['date'],
                                item['url'], item['md5_url']))
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值