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

2017-12-15 11:52:45 +08:00
 piaochen

本人以前是做客户端的,做后端没多久。 一直有一个问题困扰我,正好现在手上有一个系统在做。 系统逻辑是写一个爬虫在网上爬取一个网站的信息, 经过加工处理后,使用 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 自动建表后,发现建的表不完全满意,又要使用手动在数据库中调整的情况? 谢谢大家了。

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

就我个人来说,更倾向第一种方案,抽象出一个 models,爬虫数据保存里面,这样整个系统的契合度更好。非大神,纯个人看法。
cominghome
2017-12-15 14:44:06 +08:00
完全可以就用方案一啊
爬虫数据和 django 无关又不影响你自己写 sql 插数据
welkinzh
2017-12-15 15:15:20 +08:00
当然用一啦,django 自带 orm 干嘛不用

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/414979

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX