当前位置:首页 > 问答 > 正文

Django怎么接入数据库,数据存储管理其实没那么复杂也挺高效的

很多人一听到“数据库”就觉得头大,觉得那是专业程序员才能搞定的高深玩意儿,但如果你用过Excel表格来记录和管理数据,比如记个账、列个客户名单,那么恭喜你,你已经理解了数据库最核心的概念——存储和整理信息,Django把这件事变得像用Excel一样直观,只不过它更强大、更自动化。

(来源:Django官方文档核心设计理念)

Django的核心设计理念之一就是“不要重复造轮子”和“快速开发”,它在你和数据库之间充当了一个超级智能的中间人,你不需要直接去写复杂的SQL命令(那种专门用来和数据库对话的语言),而是用简单的Python代码来定义你的“数据表格”长什么样,Django会自动帮你把这些Python代码翻译成SQL,在数据库里创建好对应的表,并且提供了一套非常方便的工具让你来增、删、改、查数据。

具体怎么接入呢?整个过程可以分成三步,一点都不复杂。

第一步:定义你的“数据模型”——就像设计一张Excel表格的表头

在Django里,你不用直接操作数据库,你要做的是在一个叫做 models.py 的文件里,用Python的类(Class)来定义你的数据结构,这个类,就相当于一张Excel表格。

比如说,你要做一个简单的博客系统,需要存储文章,那么你的“文章表”就需要有标题、正文、发表时间这些信息,在Django里,你会这样写:

from django.db import models
class Article(models.Model):= models.CharField(max_length=200)  # 标题,类似Excel的文本列,最多200字
    content = models.TextField()              # 正文,可以很长的文本
    pub_date = models.DateTimeField(auto_now_add=True)  # 发表时间,自动记录创建时间

你看,这段代码非常直白,我们创建了一个叫 Article 的类,它继承自 models.Model,里面的 titlecontentpub_date 就是这张表的三个“列”。CharField 表示短文本,TextField 表示长文本,DateTimeField 表示日期时间。auto_now_add=True 这个参数特别贴心,意思是当一篇文章被创建时,Django会自动把当前时间填进去,你都不用操心。

(来源:Django官方文档Model字段参考)

这就好比你在Excel里,第一行设置了A列是“标题”(文本格式),B列是“正文”,C列是“发表时间”(日期格式),Django的这个步骤就是帮你把表头设计好。

第二步:告诉Django用什么数据库,并让它帮你创建表格

设计好表头之后,你得告诉Django把这张表格创建到哪个数据库里,Django非常贴心,它默认就给你准备好了一个轻量级的数据库文件(SQLite),你完全可以在项目初期用它,不用安装任何额外的数据库软件,特别适合学习和开发小项目。

Django怎么接入数据库,数据存储管理其实没那么复杂也挺高效的

这个配置在一个叫 settings.py 的文件里,里面有个 DATABASES 的配置项,默认情况下,它已经设置好了使用SQLite,数据库文件会放在你的项目目录下,你几乎不需要做任何改动就可以开始用了。

就是让Django根据你设计的“表头”(模型)去真正地创建数据库表格,这个过程通过两条简单的命令完成:

  1. 生成迁移文件:在终端(命令行)里,进入你的项目目录,运行 python manage.py makemigrations,这条命令的作用是,Django会检查你的 models.py 文件,看看你最近有没有设计新的表或者修改旧表的设计,然后为你生成一个“施工蓝图”(迁移文件),这个蓝图里记录了具体要创建哪些表、每个表有哪些列。
  2. 执行迁移:接着运行 python manage.py migrate,这条命令就是Django拿着上一步生成的“施工蓝图”,去连接数据库,按照蓝图把表格实实在在地建起来。

(来源:Django官方文档Migrations详解)

这个过程就像是你把设计好的Excel表头交给一个助手,助手看了一眼说“好的,我明白了”(makemigrations),然后他立刻就在你的电脑上生成了一个格式完全正确的空表格(migrate),以后如果你要修改表头,比如想给文章加一个“作者”字段,只需要在 Article 类里加一行代码,然后重新执行这两条命令,Django就会智能地帮你把表格结构更新好。

第三步:像操作普通Python对象一样操作数据——告别手写SQL

表格建好了,最关键的一步来了:怎么往里面存数据、怎么查询数据?这就是Django最神奇也最高效的地方。

Django怎么接入数据库,数据存储管理其实没那么复杂也挺高效的

Django提供了一个叫做“ORM”(对象关系映射)的工具,这个名字听起来很专业,但干的事情很简单:它让你完全用Python的语法来操作数据库,不需要写一句SQL。

  • 存数据(增):就像创建一个普通的Python对象。

    # 创建一个新的文章对象
    new_article = Article(title="我的第一篇文章", content="这里是文章正文...")
    # 调用 save() 方法,Django就会自动把它转换成INSERT SQL语句,存入数据库
    new_article.save()

    这比你直接写 INSERT INTO article (title, content) VALUES ... 这样的SQL语句要直观和安全多了。

  • 查数据(查):用类似过滤器的语法。

    # 获取所有文章,就像Python里获取一个列表
    all_articles = Article.objects.all()
    # 根据条件查询,比如查询标题包含“Django”的文章
    django_articles = Article.objects.filter(title__contains="Django")
    # 获取唯一的一篇文章
    first_article = Article.objects.get(id=1)

    Django的查询API非常强大和人性化,filterexcludeorder_by 这些方法让你能用几乎说英语的方式组合出复杂的查询条件。

  • 改数据和删数据:先拿到对象,然后修改属性再保存,或者直接删除。

    # 修改数据
    article = Article.objects.get(id=1)
    article.title = "修改后的标题"
    article.save()  # 更新数据库
    # 删除数据
    article.delete()

(来源:Django官方文档Making queries)

所以说,Django接入和管理数据库,本质上就是这三个步骤:用Python代码设计表格结构、用两条命令让Django去创建表格、然后用操作Python对象的方式去管理数据,它把复杂的数据库操作封装成了简单直观的Python接口,让你可以专注于业务逻辑而不是底层细节,这种方式不仅不复杂,而且因为Django框架做了大量优化,其生成的SQL语句通常也很高效,完全能满足绝大多数Web应用的需求,它让数据存储管理这件事,变得像整理你的Excel表格一样,有条不紊,轻松自在。