V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐学习书目
Learn Python the Hard Way
Python Sites
PyPI - Python Package Index
http://diveintopython.org/toc/index.html
Pocoo
值得关注的项目
PyPy
Celery
Jinja2
Read the Docs
gevent
pyenv
virtualenv
Stackless Python
Beautiful Soup
结巴中文分词
Green Unicorn
Sentry
Shovel
Pyflakes
pytest
Python 编程
pep8 Checker
Styles
PEP 8
Google Python Style Guide
Code Style from The Hitchhiker's Guide
xiaomayi2012
V2EX  ›  Python

请教, scrapy 抓取的数据插入数据库时有外键,该如何插入~!

  •  
  •   xiaomayi2012 · 2019-07-03 12:47:05 +08:00 · 1909 次点击
    这是一个创建于 1976 天前的主题,其中的信息可能已经有所发展或是发生改变。
    请教,scrapy 抓取的数据插入数据库时有外键,该如何插入,
    例如: 向 info 表中插入数据,分类想插入到 category 表中,info 表中有 category_id ,这个插入数据时该如何插入,求教谢谢~!
    表设计如下:
    category 表:
    id,
    category

    info 表:
    id,
    name,
    image,
    category_id
    10 条回复    2019-07-08 11:45:23 +08:00
    lostpupil
        1
    lostpupil  
       2019-07-03 12:54:23 +08:00
    remove fk
    zdnyp
        2
    zdnyp  
       2019-07-03 13:15:40 +08:00
    先插入 category,然后会返回 ID 啊,再拿着这个 id 插入 info
    sowevo
        3
    sowevo  
       2019-07-03 14:57:50 +08:00
    @lostpupil 不要用外键
    saulshao
        4
    saulshao  
       2019-07-03 16:13:26 +08:00
    你们说的不用外键,但是在 info 表里面还是插入 category_id 吗?如果是,那是不是还是按照二楼的做法来,只是显式的外键定义应该取消?
    xiaomayi2012
        5
    xiaomayi2012  
    OP
       2019-07-03 16:19:02 +08:00
    @saulshao @lostpupil @sowevo 各位老哥用 scrapy 抓取小说网站,写入 mysql,小说里面含有章节 这个是不是得用到外键,如果不用外键 有什么好的处理方式?
    pws22
        6
    pws22  
       2019-07-03 16:25:20 +08:00
    物理外键取消,用逻辑外键,简单来说就是你的组合在程序里搞定
    saulshao
        7
    saulshao  
       2019-07-03 16:46:23 +08:00
    @xiaomayi2012 前面的意思确实是需要用外键的,只是不在数据库里明确地定义 FK,只是在程序里或者 SQL 脚本里用外键,实际的程序步骤和 @zdnyp 提到的是完全一样的,其实你完全可以提前把整个 categoty 表都读到内存 /缓存里,然后用程序来判定该不该写入 2 个表。
    lostpupil
        8
    lostpupil  
       2019-07-04 17:47:33 +08:00
    @xiaomayi2012 fk 并不是必须的,如果你需要,可以用程序里面操作代替外键。 因为其实就是 一个 category_id 的名字而已。
    lostpupil
        9
    lostpupil  
       2019-07-04 17:48:00 +08:00
    @sowevo 没错 我就是那个意思。
    dengwen168
        10
    dengwen168  
       2019-07-08 11:45:23 +08:00
    @zdnyp 请问在 mysql 中返回 ID 要如何弄呢?
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1090 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 23:11 · PVG 07:11 · LAX 15:11 · JFK 18:11
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.