内容简介:芝麻HTTP: Scrapy小技巧-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语句。
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- 芝麻街跨界NLP,没有一个ERNIE是无辜的
- 芝麻HTTP:Python爬虫入门之Urllib库的基本使用
- ZmopSharp 0.1.67 发布,芝麻信用开放平台 .Net (C#) SDK
- 黑芝麻CEO单记章:拒绝激光雷达也可实现L3自动驾驶,改进感知算法是关键
- 块存储、文件存储、对象存储三者之比较
- 云原生存储详解:容器存储与 K8s 存储卷
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
C++ Primer 中文版(第 4 版)
Stanley B.Lippman、Josée LaJoie、Barbara E.Moo / 李师贤、蒋爱军、梅晓勇、林瑛 / 人民邮电出版社 / 2006 / 99.00元
本书是久负盛名的C++经典教程,其内容是C++大师Stanley B. Lippman丰富的实践经验和C++标准委员会原负责人Josée Lajoie对C++标准深入理解的完美结合,已经帮助全球无数程序员学会了C++。本版对前一版进行了彻底的修订,内容经过了重新组织,更加入了C++ 先驱Barbara E. Moo在C++教学方面的真知灼见。既显著改善了可读性,又充分体现了C++语言的最新进展和当......一起来看看 《C++ Primer 中文版(第 4 版)》 这本书的介绍吧!
XML 在线格式化
在线 XML 格式化压缩工具
RGB HSV 转换
RGB HSV 互转工具