小编典典

用于MSSQL的Scrapy管道

sql

我正在编写自己的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。

但是这些 值不会加载到SQL Server中 。我能够以json格式查看日志文件中的内容。

什么地方出了错。那是什么问题呢?

谁能帮帮我吗?谢谢。


阅读 204

收藏
2021-04-28

共1个答案

小编典典

代码没有正确缩进。process_itemSQLStore类定义处于同一级别,因此它不是类的方法,因此永远不会被调用。缩进:

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
2021-04-28