Scrapy:在哪里初始化数据库连接,因此它可以在蜘蛛、Pileines 和类中使用和访问

问题描述 投票:0回答:1

我有一个相当标准的Scrapy项目,它的目录结构如下

my_project
  scrapy.cfg
  my_project
    __init__.py
    items.py
    itemsloaders.py
    middlewares.py
    MyStatsCollector.py
    pipelines.py
    settings.py
    spiders
      __init__.py
      spider1.py
      spider2.py
      spider3.py

现在,我的数据库连接放置在

my_project/pipelines.py
:

import psycopg2
class SaveToPostgresPipeline:
    def __init__(self):
        hostname = ''
        username = ''
        password = ''
        database = ''

蜘蛛的工作方式是抓取数据,将其发送到管道,然后将其保存到数据库中。

我现在需要从蜘蛛(

spider1.py
spider2.py
spider3.py
)和
MyStatsCollector.py
中的数据库中获取一些数据。

我应该在项目中的哪里设置数据库连接,所以理想情况下我只初始化一次数据库连接,然后在蜘蛛、管道或 MyStatsCollector.py 中使用它。

现在,我唯一的想法是在每个文件中初始化数据库连接,这看起来不太优雅。处理这个问题的最佳方法是什么?

python database scrapy
1个回答
0
投票

如果您在蜘蛛中执行此操作并将其分配给蜘蛛属性,您将能够在蜘蛛中(显然)以及获取蜘蛛实例的所有组件(包括管道和统计收集器)中访问它。

© www.soinside.com 2019 - 2024. All rights reserved.