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
piaochen
V2EX  ›  Python

关于 django ORM 中,数据库建表方式的问题

  •  
  •   piaochen · 2017-12-15 11:52:45 +08:00 · 2606 次点击
    这是一个创建于 2538 天前的主题,其中的信息可能已经有所发展或是发生改变。

    本人以前是做客户端的,做后端没多久。 一直有一个问题困扰我,正好现在手上有一个系统在做。 系统逻辑是写一个爬虫在网上爬取一个网站的信息, 经过加工处理后,使用 django 来展示和交互。 表结构简化为三张表

    A:爬虫爬取得到的信息

    B:数据处理后得到的信息,用于 django 展示

    C:用户通过 django,提交的交互数据

    实际上 A 表跟 django 没有关系,爬虫用的,B 和 C 才是 django 用的。

    对于这样的系统,建数据库表的方式,我有三种思路:

    方案一:A,B,C 全部抽象成 django 的 model,然后使用 makemigration 和 migrate 来同步到数据库中

    方案二:A,B,C 全部写 sql 在数据库中建表,然后在 django 中,建 B,C 的 model,就不 makemigration 和 migrate 了

    方案三:A 表写 sql 建表,B,C 在 django 中建 model,然后 makemigration 和 migrate

    这三种方式,哪种好?后期可能还要加入一系列用户统计的功能。

    还有在企业级的项目中,ORM 框架,真的是遵循先建 model,然后自动生成表?还是直接使用数据库 SQL 直接建表的情况也有? 有没有 model 自动建表后,发现建的表不完全满意,又要使用手动在数据库中调整的情况? 谢谢大家了。

    4 条回复    2017-12-15 15:15:20 +08:00
    linuxchild
        1
    linuxchild  
       2017-12-15 11:59:35 +08:00
    用的话,统一了可能后期处理起来比较好?
    yearliny
        2
    yearliny  
       2017-12-15 12:00:29 +08:00 via Android
    即使 Django 的 models 建表后,你也可以直接修改 models 然后继续 makemigrations、migrate,Django 都能给你处理的很好,不需要手动 SQL。

    就我个人来说,更倾向第一种方案,抽象出一个 models,爬虫数据保存里面,这样整个系统的契合度更好。非大神,纯个人看法。
    cominghome
        3
    cominghome  
       2017-12-15 14:44:06 +08:00
    完全可以就用方案一啊
    爬虫数据和 django 无关又不影响你自己写 sql 插数据
    welkinzh
        4
    welkinzh  
       2017-12-15 15:15:20 +08:00
    当然用一啦,django 自带 orm 干嘛不用
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1180 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 22ms · UTC 18:45 · PVG 02:45 · LAX 10:45 · JFK 13:45
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.