scrapy/python/mysql:在单独的表中保存附加项信息的最佳方法是什么?

qybjjes1  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(283)

我在一个网站上爬行,上面有一些 listings 并将新列表存储在mysql表中。对于每个 listing 我想添加 price 在一个单独的表中(当它改变时)。

我目前的做法

这个 listings 表格:

<id> | guid | title | body | created_at
-------------------------------------

这个 listing_prices 表格:

<id> | listing_id | price | created_at
------------------------------------

使用 AddListingsToDatabase() 用于保存新列表并随后使用 AddPricesToDatabase() 用于将新的/更新的价格保存到数据库的管道。
AddPricesToDatabase() 我正在查询数据库,以获得所有的价格清单。然后我检查价格是否有变化,并添加/更新价格。所以我需要 listing.id .
到目前为止,这只适用于在当前爬网之前已经在数据库中的列表。

我的问题

当我想向数据库添加新的价格时,我需要 listing.id (自动增量)从数据库。当我在 AddPricesToDatabase() 管道它还没有找到 AddListingsToDatabase() 管道。

我的问题

为一个被刮去的文件保存额外信息的最佳方法是什么 Item 在另一张table上?

ezykj2lf

ezykj2lf1#

如注解中所述,您可以创建一个组合标识符,而不是自动递增标识符,例如 website_id + listing_id 这将唯一地识别你的记录。
您可以将其存储在单个列中,也可以存储在两个单独的列中并创建一个组合键。
例如: websites 表格:

<id> | website_url
------------------
``` `listings` 表格:

| website_id | guid | title | body | created_at

``` listing_prices 表格:

<id> | website_id | listing_id | price | created_at
---------------------------------------------------

listings 表中,您必须确保 id 以及 website_id 是独一无二的。

相关问题