首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Scrapy/Python/MySQL:在单独的表中保存附加项目信息的最佳方法是什么?

Scrapy/Python/MySQL:在单独的表中保存附加项目信息的最佳方法是什么?
EN

Stack Overflow用户
提问于 2018-11-20 22:38:51
回答 1查看 51关注 0票数 1

我正在抓取一个包含某种listings的Scrapy网站,并将新的列表存储在MySQL表中。对于每个listing,我希望将price添加到单独的表中(当它发生变化时)。

我目前的方法

listings表:

代码语言:javascript
复制
<id> | guid | title | body | created_at
-------------------------------------

listing_prices表:

代码语言:javascript
复制
<id> | listing_id | price | created_at
------------------------------------

使用AddListingsToDatabase()管道保存新的列表,然后使用AddPricesToDatabase()管道将新的/更新的价格保存到数据库。

AddPricesToDatabase()中,我查询数据库以获取所有包含价格的列表。然后,我检查价格是否发生了变化,并添加/更新价格。因此,我需要listing.id

到目前为止,这只适用于在当前抓取之前已经在数据库中的列表。

我的问题

当我想要向数据库添加新价格时,我需要数据库中的listing.id (auto_increment)。当我在AddPricesToDatabase()管道中查询数据库时,它还没有找到AddListingsToDatabase()管道新添加的清单。

我的问题

在单独的表中保存抓取的Item的附加信息的最佳方法是什么?

EN

回答 1

Stack Overflow用户

发布于 2018-11-21 01:23:24

正如注释中所提到的,您可以创建一个组合标识符,例如website_id + listing_id来唯一地标识您的记录,而不是自动递增您的标识符。

您可以将其存储在单个列中,也可以存储在两个单独的列中,然后创建一个组合键。

例如:

websites表:

代码语言:javascript
复制
<id> | website_url
------------------

listings表:

代码语言:javascript
复制
<id> | website_id | guid | title | body | created_at
----------------------------------------------------

listing_prices表:

代码语言:javascript
复制
<id> | website_id | listing_id | price | created_at
---------------------------------------------------

listings表中,您必须确保idwebsite_id的组合是唯一的。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/53395411

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档