当前位置:首页 > 行业动态 > 正文

django 添加数据库

正文开始

在开发Web应用时,数据库是存储和管理数据的核心组件,Django作为一款高效、灵活的Python Web框架,内置了强大的ORM(对象关系映射)系统,使得开发者无需编写原生SQL即可轻松操作数据库,本文将以MySQL为例,详细介绍如何在Django项目中添加并配置数据库,同时分享一些提升开发效率的实用技巧。

一、Django数据库配置步骤

安装数据库驱动

Django默认使用SQLite,但实际项目中更常用MySQL或PostgreSQL,以MySQL为例,需先安装Python的MySQL驱动:

pip install mysqlclient

修改`settings.py`

在Django项目的settings.py文件中,找到DATABASES配置项,替换默认的SQLite配置为MySQL信息:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'your_database_name',   # 数据库名称
        'USER': 'your_username',        # 数据库用户名
        'PASSWORD': 'your_password',    # 数据库密码
        'HOST': 'localhost',            # 数据库地址(本地为localhost)
        'PORT': '3306',                 # 数据库端口
    }
}

创建数据库

在MySQL中手动创建与配置中同名的数据库:

CREATE DATABASE your_database_name;

二、定义数据模型(Model)

Django通过模型(Model)实现与数据库表的映射,在应用的models.py文件中定义模型类:

from django.db import models
class Article(models.Model):
    title = models.CharField(max_length=200)
    content = models.TextField()
    pub_date = models.DateTimeField(auto_now_add=True)
    author = models.ForeignKey('auth.User', on_delete=models.CASCADE)
    def __str__(self):
        return self.title

CharField:短文本字段,需指定最大长度。

TextField:长文本字段,适合存储文章内容。

DateTimeField:时间日期字段,auto_now_add=True表示自动记录创建时间。

ForeignKey:外键关联,此处关联Django内置的用户模型。

django 添加数据库

三、生成并执行数据库迁移

Django通过迁移(Migration)机制将模型变更同步到数据库。

1、生成迁移文件

python manage.py makemigrations

该命令会检测模型变化并生成迁移脚本。

2、执行迁移

python manage.py migrate

此操作会在数据库中创建模型对应的表结构。

四、验证数据库连接

1、进入Django Shell:

python manage.py shell

2、测试数据操作:

django 添加数据库

from your_app.models import Article
from django.contrib.auth.models import User
创建用户(若不存在)
user = User.objects.create_user(username='testuser', password='testpass123')
创建文章
article = Article.objects.create(
    title='Django数据库入门',
    content='本文详细讲解Django数据库配置与操作。',
    author=user
)
查询数据
articles = Article.objects.all()
print(articles)

五、高级技巧与注意事项

1、多数据库支持

Django支持同时连接多个数据库,在settings.py中扩展DATABASES配置即可:

DATABASES = {
    'default': { ... },  # 主数据库
    'read_replica': {    # 从数据库
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'replica_db',
        # 其他配置...
    }
}

2、性能优化

使用select_relatedprefetch_related减少查询次数。

通过only()defer()控制返回字段,减少数据传输量。

3、数据备份

定期使用Django的dumpdata命令备份数据:

django 添加数据库

python manage.py dumpdata > backup.json

引用说明

Django官方文档:[Database Configuration](https://docs.djangoproject.com/en/4.2/ref/databases/)

MySQL官方驱动:[mysqlclient](https://pypi.org/project/mysqlclient/)

ORM高级技巧:[Django ORM Cookbook](https://books.agiliq.com/projects/django-orm-cookbook/)

正文结束