gpt4 book ai didi

python - scrapy 数据库插入失败但没有错误

转载 作者:行者123 更新时间:2023-11-30 22:45:11 25 4
gpt4 key购买 nike

enter image description here

我正在使用 scrapy 和数据集( https://dataset.readthedocs.io/en/latest/quickstart.html#storing-data ),它是 sqlalchemy 之上的一层,尝试将数据加载到 sqllite 表中作为 Sqlalchemy : Dynamically create table from Scrapy item 的后续操作。 .

使用我拥有的数据集包:

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

运行我的蜘蛛后,我看到在 try except block 中打印出打印语句,没有错误,但完成后,我查看表格并看到屏幕截图。表中没有数据。我做错了什么?

最佳答案

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

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

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

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

这将使用蜘蛛名称作为表名称创建一个管道对象,您当然可以使用任何您想要的名称。

此外,行 self.table = db[table_name].table 应替换为 self.table = db[table_name] ( https://dataset.readthedocs.io/en/latest/quickstart.html#storing-data )

之后,数据被存储: enter image description here

关于python - scrapy 数据库插入失败但没有错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41273314/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com