Pymysql

 一次性插入多字段 职位信息 和 公司信息到 mysql 。

# 适用于表已经存在
# 插入的字段一定要和表结构字段 以及类型一样 

import pymysql


class JzmPipeline(object):
    '''把数据存储到mysql数据库中'''
    # 1. 在open_spider方法中, 链接Mysql数据库
    def open_spider(self, spider):
        if spider.name == 'jzm_pos_com':
            # 链接本地Mysql数据库
            self.conn = pymysql.connect(host='', port=0.0.0.0, database='test', user='user', password='password',charset='utf8')
                                              
            self.cur = self.conn.cursor()

    # 2. 在process_item方法中, 把数据插入到Mysql数据库中
    def process_item(self, item, spider):
        """创建游标对象"""
        if spider.name == 'jzm_pos_com':
            if item['flag'] == 'pos':# 插入两个表要一个flag判断# 职位表
                try:
                    self.cur.execute(
                        '''insert into xb_company_position(pos_code,pos_name,status,degree,address,city,description,job_requirements,work_nature,recruit_num,com_code) values(%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)''',
                        [
                            'qy'+item['pos_code'], item['pos_name'], item['status'],
                            item['degree'], item['address'], item['city'],
                            item['description'], item['job_requirements'], item['work_nature'],
                            item['recruit_num'], item['com_code']
                        ])
                    self.conn.commit()
                except Exception as e:
                    print(e)
            elif item['flag'] == 'com':# 插入两个表要一个flag判断
                try:
                    self.cur.execute(
                        '''insert into xb_company(name,logo,company_nature,scale_num,sub_industry,address,introduce,code) values(%s,%s,%s,%s,%s,%s,%s,%s)''',
                        [
                            item['name'], item['logo'], item['company_nature'],
                            item['scale_num'], item['sub_industry'], item['address'],
                            item['introduce'], 'qy'+item['code'],
                        ])
                    self.conn.commit()
                except Exception as e:
                    print(e)

    # 3. 在close_spider方法中, 关闭Mysql数据库链接
    def close_spider(self, spider):
        if spider.name == 'jzm_pos_com':
            # 关闭Mysql数据库链接
            self.conn.close()

(此方法是在scrapy-redis框架里进行的,中途出现了控制台能打印数据,但是不能入库,此时要检查 item类里面的是不是都有;第二种,能入redis库 ,不能存入mysql ,这时候就需要检查字段是不是和mysql库表字段 ,都是对应完整的,item里面的定义是不是都有)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值