xiaomayi2012 发表于 2019-7-3 12:06

scrapy 爬取数据后 如果实现外键的插入

scrapy 爬取数据后通过pipelines插入数据,在表中有外键,这个外键数据该如何插入数据库中?求教,谢谢


表设计如下:
category表:
id,
category


info表:
id,
name,
image,
category_id


求教在Pipelines中如何请问,怎么实现根据category_id 外键 插入数据!

VioletKiss 发表于 2019-7-3 16:22

本帖最后由 VioletKiss 于 2019-7-3 16:26 编辑

两种方法:

1. 先插category表,再插info表,另外 try except插入category表的主键冲突异常就行

2. 再加一张关联表,不设主键,然后去重

xiaomayi2012 发表于 2019-7-4 09:18

VioletKiss 发表于 2019-7-3 16:22
两种方法:

1. 先插category表,再插info表,另外 try except插入category表的主键冲突异常就行


在Pipelines 里面item只能一个一个的插入,如果不用外键的话,数据中例如抓取电视剧多个ur播放l链接这种情况有什么好的解决方案吗

VioletKiss 发表于 2019-7-4 09:46

本帖最后由 VioletKiss 于 2019-7-4 09:48 编辑

xiaomayi2012 发表于 2019-7-4 09:18
在Pipelines 里面item只能一个一个的插入,如果不用外键的话,数据中例如抓取电视剧多个ur播放l链接这种 ...
是这样吗:https://blog.csdn.net/lucky404/article/details/79427304

既然都有数据了,插就完事了呀
如果说item中有info和category表的所有数据,那么你就先判断categoryId存不存在,不存在插category表,存在就不插,然后插info表就行了啊

主要是 item 里面是些什么数据 这才是主要的 你没说啊

xiaomayi2012 发表于 2019-7-4 13:31

本帖最后由 xiaomayi2012 于 2019-7-4 13:36 编辑

VioletKiss 发表于 2019-7-4 09:46
是这样吗:https://blog.csdn.net/lucky404/article/details/79427304

既然都有数据了,插就完事了呀
...
我现在在item中已经获取到了数据,item下通过Debug模式 获取到的数据格式如下:

title = ‘反贪风暴4’
category= ['动作片','犯罪片']
...

downloads={
                {'title': '标题1',
                '磁力链接':'magnet:?xt=urn:btih:B9781903F8D37F91001D',
               '迅雷链接':'thunder://QUFtYWduZXQ6P3h0PXVybjpidGloOk'},
               {'title': '标题2',
                '磁力链接':'magnet:?xt=urn:btih:B9781903F8D37F91001D',
               '迅雷链接':'thunder://QUFtYWduZXQ6P3h0PXVybjpidGloOk'},
}

现在item返回的 category值是一个列表形式download值是一个字典,因为下一步我想把这些数据存入到mysql中,这种情况在Pipelines中我该如何存储

VioletKiss 发表于 2019-7-4 15:28

你如果想简单点,一张表,就直接存字符串,查询分类的时候用like查,如果同时查多个分类就and多几次like就行

如果你想分两张表存,那么就要再加一张中间表,info表和category表是多对多的关系,需要一张中间表来保持各自对应的id :
表设计如下:
category表:
category_id,
category_name

info表:
info_id,
name,
image,
category_id

中间表:info_category
info_id,
category_id

中间表可以用这两个id作为联合主键
页: [1]
查看完整版本: scrapy 爬取数据后 如果实现外键的插入