Database insertion fails without error with scrapy

前端 未结 2 401
Happy的楠姐
Happy的楠姐 2021-01-25 18:41

I\'m working with scrapy and dataset (https://dataset.readthedocs.io/en/latest/quickstart.html#storing-data) which is a layer on top of sqlalchemy , trying to load data

相关标签:
2条回答
  • 2021-01-25 19:10

    The code you posted is not working as is for me:

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

    That's because the __init__ method expects a table_name argument which is not being passed. You need to implement the from_crawler class method in the pipeline object, something like:

    @classmethod
    def from_crawler(cls, crawler):
        return cls(table_name=crawler.spider.name)
    

    That would create a pipeline object using the spider name as table name, you can of course use any name you want.

    Also, the line self.table = db[table_name].table should be replaced by self.table = db[table_name] (https://dataset.readthedocs.io/en/latest/quickstart.html#storing-data)

    After that, the data is stored:

    0 讨论(0)
  • 2021-01-25 19:13

    Maybe some problems with the Db connection. Put your this snippet into a try except to check for the problem.

    try:
       db_path = "sqlite:///"+settings.SETTINGS_PATH+"\\data.db"
       db = dataset.connect(db_path)
       self.table = db[table_name].table
    except Exception:
       traceback.exec_print()
    
    0 讨论(0)
提交回复
热议问题