MySQL не сохраняет данные, которые очищаются

Я сделал небольшой проект, используя Scrapy. Дело в том, что моя scrapy - сканирование страниц и очистка данных. Но он не сохраняется в моей базе данных. Я использую MySQL как мою базу данных.

Я думаю, что есть что-то, что я пропускаю в файле pipelines.py

from scrapy import log
from twisted.enterprise import adbapi
import MySQLdb.cursors
# the required Pipeline settings.
class MySQLStorePipeline(object): def __init__(self, *args, **kwargs): # db settings self.dbpool = adbapi.ConnectionPool('MySQLdb', db='project2', user='root', passwd='', host='127.0.0.1', port='3306', cursorclass=MySQLdb.cursors.DictCursor, charset='utf8', use_unicode=True ) def process_item(self, item, ******): # run db query in thread pool query = self.dbpool.runInteraction(self._conditional_insert, item) query.addErrback(self.handle_error) return item def _conditional_insert(self, tx, item): if sites.get('//div[@class="abTbl "]'): #runs the condition insert_id = tx.execute(\ "insert into crawlerapp_directory (Catogory, Bussiness_name, Description, Number, Web_url) " "values (%s, %s, %s, %s, %s)", (item['Catogory'][0], item['Bussiness_name'][0], item['Description'][0], item['Number'][0], item['Web_url'][0], ) )
#connection to the foreign key Adress. tx.execute(\ "insert into crawlerapp_adress (directory_id, adress_name) " "values (%s, %s)", (insert_id, item['adress_name'][0] ) )
#connection to the foreign key Photos. tx.execute(\ "insert into crawlerapp_photos (directory_id, Photo_path, Photo_name) " "values (%s, %s, %s)", (insert_id, item['Photo_path'][0], item['Photo_name'][0] ) ) log.msg("Item stored in db: %s" % item, level=log.DEBUG) def handle_error(self, e): log.err(e)

пожалуйста, помогите мне сохранить скребковые данные в моей базе данных.

1 ответ

Попробуйте это, это работает для меня

import MySQLdb
from scrapy import log
class ****************(object): def __init__(self): self.conn = MySQLdb.connect(host_name, user_name, password, db_name, charset="utf8", use_unicode=True) self.cursor = self.conn.cursor() def ***********(******): pass def close_******(self,******): self.conn.close() def process_item(self, item, ******): try: sql = """INSERT INTO tutorial ('title','link','desc','last_updated') VALUES ('%s', '%s','%s','%s')""" %(item['title'][0].replace("'","'"), item['link'][0].replace("'","'"), item['desc'][0].replace("'","'"), item['last_updated'].replace("'","'") ) self.cursor.execute(sql) self.conn.commit() except MySQLdb.Error, e: print '!!!!!!!!!!!!!!!!!!DB Write failure!!!!!!!!!!!!' print "Error %d: %s" % (e.args[0], e.args[1]) log.msg("Error %d: %s" % (e.args[0], e.args[1]), level=log.CRITICAL) return item

licensed under cc by-sa 3.0 with attribution.