1 setting.py文件,寫入數據庫連接屬性
# mysql連接屬性 MYHOST = '127.0.0.1' MYUSER = 'root' MYPASSWORD = '123' MYDB = 'temp'
2 pipelines.py文件,寫入管道
首先導入
# 異步數據庫操作api from twisted.enterprise import adbapi import MySQLdb.cursors
編寫管道
# 異步寫入mysql pipeline class TwistedCnblogMysqlPipeline(object): def __init__(self,dbpool): self.dbpool = dbpool # 方法名是固定的,類方法,該方法優先於__init__執行 @classmethod def from_settings(cls, settings): db_config = dict( #變量名固定 host = settings['MYHOST'], user = settings['MYUSER'], passwd = settings['MYPASSWORD'], db = settings['MYDB'], charset = 'utf8', cursorclass = MySQLdb.cursors.DictCursor, ) # 數據庫連接池 dbpool = adbapi.ConnectionPool('MySQLdb' ,**db_config) return cls(dbpool) def process_item(self,item,spider): # 異步插入操作 query = self.dbpool.runInteraction(self.insert,item) query.addErrback(self.handle_error) return item # 插入操作 def insert(self,cursor,item): sql = '插入語句' cursor.execute(sql) #錯誤處理函數 def handle_error(self,error): print str(error)
3 settings.py文件,加入該管道