我们都知道pipelines文件用来处理数据,比如把数据存储为json格式或者csv格式再者就是存储到mysql或者MongoDB数据库中。问题来了,如果同一份数据,我既要保存为json格式又要存到mysql数据库和MongoDB数据库中,这个时候数据之间的存储过程会不会打架呢?答案是肯定不会的,scrapy架构的配置很厉害,我们这个时候可以在settings文件中进行设置存储数据的优先级顺序。问题是若数据存储过程中,有所改变的话,会不会影响接下来数据的存储呢?即数据按照优先级存储的过程中若有数据发生变化会不会影响接下来将要存储的数据呢?
- 实验一
在MysqlPipeline中临时把item['title']='aaa',并且设置MysqlPipeline优先级最高
优先级顺序:
'xxx.pipelines.xxxPipeline':400,
'xxx.pipelines.MongodbPipeline':300,
'xxx.pipelines.MysqlPipeline': 100,
观察数据的变化情况:
mydata.json
mysql
MongoDB
- 实验二:
在MongodbPipeline中的item['title']改"aaa",MySQL中不改变的话,会发现,Mysql数据库中的title字段是正常显示的,而Mongodb和json中的title还是字符串"aaa", - 总结
pipelines中只要不对数据进行更改,即使优先级顺序不同,存储到各个数据库中的数据是一样的。
重点
若在这个过程中数据被更改,则会影响随后存储的数据也会被动更新
网友评论