正文开始
在开发Web应用时,数据库是存储和管理数据的核心组件,Django作为一款高效、灵活的Python Web框架,内置了强大的ORM(对象关系映射)系统,使得开发者无需编写原生SQL即可轻松操作数据库,本文将以MySQL为例,详细介绍如何在Django项目中添加并配置数据库,同时分享一些提升开发效率的实用技巧。
Django默认使用SQLite,但实际项目中更常用MySQL或PostgreSQL,以MySQL为例,需先安装Python的MySQL驱动:
pip install mysqlclient
在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;
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通过迁移(Migration)机制将模型变更同步到数据库。
1、生成迁移文件:
python manage.py makemigrations
该命令会检测模型变化并生成迁移脚本。
2、执行迁移:
python manage.py migrate
此操作会在数据库中创建模型对应的表结构。
1、进入Django Shell:
python manage.py shell
2、测试数据操作:
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_related
和prefetch_related
减少查询次数。
通过only()
或defer()
控制返回字段,减少数据传输量。
3、数据备份:
定期使用Django的dumpdata
命令备份数据:
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/)
正文结束