Scrapy用mysql存储的小技巧

来源:互联网 发布:mac svn图形化界面 编辑:程序博客网 时间:2024/06/01 07:39

只要你的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()# 写入操作

第一个for循环 item的key作为mysql字段名字 value 作为字段的VALUES值

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

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

0 0