一、数据库连接
1.数据库的连接配置
django 连接mysql的配置流程:
- 安装 pymysql pip install pymysql
(1) 数据库用户
有创建数据库权限的用户
(2) 创建数据库
- 修改配置
settins
.在settings.py中配置DATABASES
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # 数据库引擎 'NAME': 'mydb', #数据库名称 'USER': 'admin', # 链接数据库的用户名 'PASSWORD': 'Root110qwe', # 链接数据库的密码 'HOST': '127.0.0.1', # mysql服务器的域名和ip地址 'PORT': '3306', # mysql的一个端口号,默认是3306 } }
- 修改项目文件夹(和settings.py文件所在的目录)下
__init__.py 文件
写上:
import pymysql pymysql.install_as_MySQLdb()
- 设置时区 TIME_ZONE = 'Asia/ShangHai' # 北京时间
二.django的ORM系统
-对象关系映射(Object Relational Mapping,简称ORM)!
简单的说就是用面向对象的方式,描述数据库,操作数据库,
达到不用编写SQL语句就能对数据库进行增删改查。
1.ORM概念:对象关系映射(Object Relational Mapping,简称ORM)
2.ORM的优势:不用直接编写SQL代码,只需像操作对象一样从数据库操作数据。
三.模型的创建与激活
创建模型
Student的模型,代表啊学生
from django.db import models # Create your models here. class Student(models.Model): name = models.CharField(max_length=20) age = models.SmallIntegerField(default=0) sex = models.SmallIntegerField(default=1) qq = models.CharField(max_length=20,unique=True,null=True) phone = models.CharField(max_length=20,unique=True,null=True) c_time = models.DateTimeField(verbose_name='创建时间',auto_now_add=True) grade = models.ForeignKey('Grade',on_delete=models.SET_NULL,null=True) e_time = models.DateTimeField(verbose_name='编辑时间',auto_now=True) is_delete = models.BooleanField(verbose_name='删除标记',default=False)
总结:
1. 每一个模型都是django.db.models.Model的子类
2. 类变量 表示模型中的数据库字段
3. 每一个字段由一个字段类的实例表示
激活模型
1.在项目中注册app
2.运行数据库迁移命令(一定要在项目根目录下)
python mange.py makemigrations teacher
告诉django,我们做了哪些数据库的更改
迁移
sqlmigrate 从迁移获取sql语句
--
-- Create model Student
--
CREATE TABLE `teacher_student` (
`id` integer AUTO_INCREMENT NOT NULL PRIMARY KEY,
`name` varchar(20) NOT NULL,
`age` smallint NOT NULL,
`sex` smallint NOT NULL,
`qq` varchar(20) NOT NULL,
`phone` varchar(20) NOT NULL,
`c_time` datetime(6) NOT NULL);
COMMIT;
3.运行migrate命令,使迁移生效
python manage.py migrate
# 表名 appname_模型name.lower
四.数据的增删改查
-工具 djang shell 调试工具
python manage.py shell
- 增
4种方法
#第一种 student = Student(name='张三 ',age=18) student.save() #第二种 student = Student() student.name = '李四' student.age = 18 student.save() #第三种 Student.objects.create(name='王五',age=16) #第四种 Student.objects.get_or_create(name='赵六',age=17)
- 查
Student.objects.all() Student.objects.filter(name='李四',age='18') Student.objects.get(id=1)
-删
Student.objects.all().delete() Student.objects.filter(name='李四',age='18').delete() Student.objects.get(id=1).delete()
-改
Student.objects.filter(name='李四',age='18').update(name='钱七') student = Student.objects.get(id=1) student.name='王五' student.save()