Django——创建数据库和表

本文介绍如何使用Django的内置ORM框架进行数据库操作,包括模型定义、数据库配置、数据迁移及增删改查等核心功能。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Django——创建数据库和表

Django拥有内置的ORM框架(object relational mapping),通过对象操作数据库。

模型是项目的数据来源,其中每一个模型都是一个python类,并且全部继承django.db.models.Model类

  • 定义django.db.models.Model的子类,创建数据库表;
  • 定义表中的字段,类里面的属性;
  • 类中的方法就是对数据库进行数据的增删改查等操作;
  • 模型的文件名默认是models.py;

在使用指令创建项目时,django默认不会自动创建模型文件;在创建应用时,会主动创建模型文件。

创建模型

项目的数据存在数据库中,每模型文件中的一个子类都是一个数据表

创建一个phoneNumber类,定义字段类型为models.CharField的两个字段,表示的类型是varchar

from django.db import models

class phoneNumber(models.Model):  # 每一个类都必须继承models.Model
    name = models.CharField(max_length=10, verbose_name='名称')
    number = models.CharField(max_length=11, verbose_name='电话号码')

在模型文件中定义完类后,需要配置模型,在项目的配置文件setting.py中修改INSTALLED_APPS
DATABASES变量的值

INSTALLED_APPS = [
    ...
    '创建的应用名'   # 添加模型文件所在的位置
]

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

Django中默认的数据库是SQLite3,同时也支持MySQL、Oracle和PostgreSQL等数据库

设置数据库为MySQL

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'mysqldb',
        'USER': '',
        'PASSWORD': '',
        'HOST': '',     # 数据库所在的IP地址,为空表示127.0.0.1
        'POST': '',     # 连接端口号,为空表示默认端口号3306
    }
}

更新数据

在任何数据改动后,都需要执行更新数据的操作,在Django中叫做数据库迁移

python manage.py makemigrations 应用名称    # 在应用模块进行数据的更新
python manage.py migrate                   # 数据更新到数据库中
  • 在进行数据更新时,Django会自动生成一个001_initial.py迁移文件;
  • 迁移文件位置在应用目录下的migrations目录;
  • Django只为更改的部分生产迁移文件;
from django.db import models
class Migration(migrations.Migration):

    initial = True

    dependencies = [
    ]

    operations = [
        migrations.CreateModel(
            name='phoneNumber',
            fields=[
                ('id', models.BigAutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
                ('name', models.CharField(max_length=10, verbose_name='名称')),
                ('number', models.CharField(max_length=11, verbose_name='电话号码')),
            ],
        ),
    ]

添加数据

Django通过Manager提供数据库访问接口。默认是为每个模型添加一个名为objects的管理器,调用objects的各种
方法对数据进行相关操作。

  • 只有进入当前的python交互式环境才能正确的使用模型;
  • 系统的python的交互式环境,因为无法加载manager.py文件的配置信息,所以会出错;
  • 执行python manager.py shell进入当前项目的交互式环境进行添加数据;

save()方法将对象数据写入数据库

>>> from apps.models import phoneNumber            # 导入模型
>>> n = phoneNumber(name='小米', number='123')     # 创建模型
>>> n.save()                                       # 保存数据

create()方法创建并保存对象

>>> from apps.models import phoneNumber            # 导入模型
>>> n = phoneNumber.objects.create(name='小米', number='123')

不管使用哪种方法进行数据保存,django都会默认给新添加的数据进行添加一个名为id的字段,作为模型的主键
也可以指定id的值。

  • id作为主键,具有唯一标识的作用;
  • 当存在相同的id时,会将旧数据进行覆盖;
>>> from apps.models import phoneNumber            # 导入模型
>>> n = phoneNumber.objects.create(id='2', name='小米', number='123')
### 创建修改 Django 数据库Django 中管理数据库结构主要通过模型定义以及迁移机制来完成。 #### 初始化项目并创建应用 为了操作数据库,首先需要有一个 Django 项目及其应用。可以通过如下命令初始化一个新的 Django 项目: ```bash python -m django --version django-admin startproject mysite cd mysite ``` 接着可以创建一个新应用以便于后续的操作[^1]: ```bash python manage.py startapp books ``` #### 定义或修改模型类 对于想要重新创建或是修改现有的数据库来说,在对应的 `models.py` 文件内调整 Python 类即可实现这一目的。比如要新增一张名为 "Book" 的格,则可以在 `books/models.py` 添加相应的类描述[^3]: ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) def __str__(self): return self.title ``` 如果已经存在该模型并且希望对其进行变更(如增加字段),只需编辑现有代码段加入所需属性: ```python isbn = models.CharField(max_length=13, unique=True, null=True, blank=True) ``` 上述改动意味着每本书籍可选关联唯一国际标准书号(ISBN),允许为空值[^2]. #### 执行 makemigrations migrate 命令 一旦完成了对模型层面上的设计工作之后,就需要通知 Django 将这些变化同步到实际使用的数据库里去。这一步骤分为两部分——先生成迁移脚本(`makemigrations`)再执行它们(`migrate`)。 - **生成迁移文件** 当对模型进行了任何变动后,应该立即运行此命令以确保所有更改都被记录下来形成版本控制的一部分: ```bash python manage.py makemigrations ``` 这条指令会自动生成必要的 SQL 脚本来反映最新的数据模式改变情况,并将其保存为 `.py` 文件存放在各个应用程序下的 migrations 目录下. - **应用迁移至数据库** 最后一步就是真正地让这些待处理的变化生效,即更新底层关系型数据库系统的架构使之与当前项目的逻辑保持一致: ```bash python manage.py migrate ``` 此时,Django 会读取之前产生的迁移文件并将其中所指示的动作逐一实施,从而达到刷新整个数据库布局的效果.
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值