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')
Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐