数据库插入失败,没有错误且抓取

使用数据集包,我有:

class DynamicSQLlitePipeline(object):

def __init__(self,table_name):

db_path = "sqlite:///"+settings.SETTINGS_PATH+"\\data.db"

db = dataset.connect(db_path)

self.table = db[table_name].table

def process_item(self, item, spider):

try:

print('TEST DATASET..')

self.table.insert(dict(name='John Doe', age=46, country='China'))

print('INSERTED')

except IntegrityError:

print('THIS IS A DUP')

return item

运行完Spider之后,我看到在tryexcept块中打印出了打印语句,没有错误,但是完成后,我在表中查看了屏幕截图。表中没有数据。我究竟做错了什么?

回答:

你发布的代码对我来说不起作用:

TypeError: __init__() takes exactly 2 arguments (1 given)

这是因为该__init__方法需要一个table_name未传递的参数。你需要from_crawler在管道对象中实现class方法,例如:

@classmethod

def from_crawler(cls, crawler):

return cls(table_name=crawler.spider.name)

这将使用蜘蛛网名称作为表名创建管道对象,当然你可以使用任何所需的名称。

另外,该行self.table = db[table_name].table应替换为self.table = db[table_name]

以上是 数据库插入失败,没有错误且抓取 的全部内容, 来源链接: utcz.com/qa/409353.html

回到顶部