models设计好后,在命令行窗口,运行python3 manage.py makemigrations 为模型的改变生成迁移文件;运行 python3 manage.py migrate 对应用数据库进行迁移。
6.1 数据迁移
数据库迁移被分解成生成和应用两个命令是为了让咱们能够在代码控制系统上提交迁移数据并使其能在多个应用里使用;这不仅仅会让开发更加简单,也给别的开发者和生产环境中的使用带来方便。
迁移那些App的models,是在settings.py的INSTALLED_APPS节点获取的。没在这里配置的,不会进行迁移。
如果想指定只迁移其中的一个,可以用命令的最后加上App的名称,如:python3 manage.py makemigrations base和python3 manage.py migrate base。
如果想要查询迁移文件对应的SQL语句,可以执行命令:python3 manage.py sqlmigrate base 0001一探究竟。咦,怎么会有一个id字段,刚刚明明没定义,是不是弄错了?没有错,它是从父类(models.Model)继承下来的自增长类型的主键。
BEGIN;---- Create model Post--CREATE TABLE "base_post"("id" integer NOT NULL PRIMARY KEY AUTOINCREMENT, "name" varchar(60) NOT NULL, "createDate" datetime NOT NULL);COMMIT;
6.2 增删改查
Django框架,除了生成数据表之外,竟还生成了对数据库操作的API,厉害,厉害,咱得赶紧去look一look。
1. 新增岗位数据
from base.models import Post
p = Post(name='研发经理')
p.save()
2. 删除岗位数据
from base.models import Post
Post.objects.filter(id=1).delete()
3. 修改岗位数据
from base.models import Post
Post.objects.filter(id=1).update(name='项目经理')
4. 查询所有数据
from base.models import Post
posts = Post.objects.all()
按条件查询(只列出重要的部分)
操作数据库的方法挺多的,聚合方法,可以在django.db.models中找到。不用一一去验证,那样太累,用到时再去查找。
按我说,直接用原生的SQL语法最简单,如果你会的话。
from base.models import Postfrom django.db.models import Countpost = Post.objects.annotate(num_name=Count('项目经理'))result=post[0].num_name
这次的内容有点多,再继续下去的话,怕你伤着了,咱们先告一个段落,明天继续。
轻松一刻,放松一下,听一首曲,抿一口茶,读一本书,涨点姿势。