zoukankan      html  css  js  c++  java
  • Scrapy小技巧-MySQL存储, MYSQL拼接

    这两天上班接手,别人留下来的爬虫发现一个很好玩的 SQL脚本拼接。

    只要你的Scrapy Field字段名字和 数据库字段的名字 一样。那么恭喜你你就可以拷贝这段SQL拼接脚本。进行MySQL入库处理。

    具体拼接代码如下:

        def process_item(self, item, spider):
            if isinstance(item, WhoscoredNewItem):
                table_name = item.pop('table_name')
                col_str = ''
                row_str = ''
                for key in item.keys():
                    col_str = col_str + " " + key + ","
                    row_str = "{}'{}',".format(row_str, item[key] if "'" not in item[key] else item[key].replace("'", "\'"))
                    sql = "insert INTO {} ({}) VALUES ({}) ON DUPLICATE KEY UPDATE ".format(table_name, col_str[1:-1], row_str[:-1])
                for (key, value) in six.iteritems(item):
                    sql += "{} = '{}', ".format(key, value if "'" not in value else value.replace("'", "\'"))
                sql = sql[:-2]
                self.cursor.execute(sql) #执行SQL
                self.cnx.commit()# 写入操作
    

      

    这个SQL拼接实现了,如果数据库存在相同数据则 更新,不存在则插入 的SQL语句

    具体实现就是第一个for循环,获取key作为MySQL字段名字、VALUES做为SQL的VALUES(拼接成一个插入的SQL语句)

    第二个for循环,实现了 字段名 = VALUES的拼接。

    和第一个for循环的中的sql就组成了 insert into  XXXXX   on duplicate key update 这个。存在则更新 不存在则插入的SQL语句。

  • 相关阅读:
    第一阶段冲刺10天 第六天
    第一阶段冲刺10天 第五天
    第一阶段冲刺10天 第四天
    第一阶段冲刺10天 第三天
    第一阶段冲刺10天 第二天
    第一阶段冲刺10天 第一天
    典型用户分析
    第二次小组冲刺训练
    寻找水王代码(找多个字母中出现最多次数的字母)
    冲刺周期第二天
  • 原文地址:https://www.cnblogs.com/pythonClub/p/9740718.html
Copyright © 2011-2022 走看看