我正在编写自己的Python scrapy管道:
from scrapy.exceptions import NotConfigured from scrapy.exceptions import DropItem import pymssql from slybot.item import create_item_version class SQLStore(object): def __init__(self): self.conn = pymssql.connect(host='XXXXXX', user='sa', password='1timep', database='DBSample') self.cursor = self.conn.cursor() #log data to json file def process_item(self, item, spider): try: self.cursor.execute("INSERT INTO Movie(Description, Location,Title) VALUES (%s, %s, %s)", (item['Description'], item['Location'], item['Title'])) self.conn.commit() except pymssql.Error, e: print ("error") return item
我正在尝试将值插入SQL Server。
以下是我的蜘蛛设置:
ITEM_PIPELINES = {'slybot.dupefilter.SQLStore' : 100}
一切正常。当我在Scrapyd中提交蜘蛛时,我看到以下日志文件
2015-01-19 16:07:57+0530 [scrapy] INFO: Enabled item pipelines: SQLStore
从日志文件中,我看到我的蜘蛛正在使用SQLStorepipline。
SQLStore
但是这些 值不会加载到SQL Server中 。我能够以json格式查看日志文件中的内容。
什么地方出了错。那是什么问题呢?
谁能帮帮我吗?谢谢。
代码没有正确缩进。process_item与SQLStore类定义处于同一级别,因此它不是类的方法,因此永远不会被调用。缩进:
process_item
import pymssql from slybot.item import create_item_version class SQLStore(object): def __init__(self): self.conn = pymssql.connect(host='XXXXXX', user='sa', password='1timep', database='DBSample') self.cursor = self.conn.cursor() def process_item(self, item, spider): try: self.cursor.execute("INSERT INTO Movie(Description, Location,Title) VALUES (%s, %s, %s)", (item['Description'], item['Location'], item['Title'])) self.conn.commit() except pymssql.Error, e: print ("error") return item