import pymysql class JobspiderPipeline(object): def __init__(self): # 1. 建立数据库的连接 self.connect = pymysql.connect( host='localhost', port=3306, user='root', passwd='123456', db='job51', charset='utf8' ) # 2. 创建一个游标cursor, 是用来操作表。 self.cursor = self.connect.cursor() # MongoDB/Redis: NoSQL非关系型数据库,存储字典结构的数据,一个数据库中可以有多个表,表与表之间是独立的。 # 文章和评论之间是 一对多 的关系 # {'title': 'Python是什么?', 'comments': ['不知道', '不清楚', '很牛逼'...]} # {'title': 'Python是什么?', 'comments': ['不知道', '不清楚', '很牛逼'...]} # MySQL/Sqlite3: SQL关系型数据库,存储bool类型、字符串类型、数值类型的数据,不能存集合。 # 文章表 # id title # 1 Python是什么? # 2 Java是什么? # 评论表 # id content article # 1 很不错 1 # 1 很不错 1 # 1 很不错 1 # 1 很不错 2 def process_item(self, item, spider): # 3. 将Item数据放入数据库,默认是同步写入。 # INSERT INTO job(zwmc); DELETE DATABASE job; VALUES ('123') SQL注入 insert_sql = "INSERT INTO job(zwmc, zwxz, zpyq, gwyq) VALUES ('%s', '%s', '%s', '%s')" % (item['zwmc'], item['zwxz'], item['zpyq'], item['gwyq']) self.cursor.execute(insert_sql) # 4. 提交操作 self.connect.commit() def close_spider(self, spider): self.cursor.close() self.connect.close()