1、ORM 模型映射到数据库步骤
模型操作步骤如下:
(1)配置数据库
在 settings.py
中,配置好DATABASES
,做好数据库相关的配置。
(2)编写模型
在app
中的models.py
中定义好模型,这个模型必须继承自django.db.models.Model
类。
(3)注册应用
将这个app
添加到settings.py
的INSTALLED_APP
中。
(4)生成迁移文件
在命令行终端,进入到项目所在的路径,然后执行命令来生成迁移脚本文件。
python manage.py makemigrations
(5)执行迁移文件
同样在命令行中,执行命令来将迁移脚本文件映射到数据库中。
python manage.py migrate
(6)crud
使用模型类进行crud
操作。
2、配置数据库
如果使用默认数据库,则可以不用修改。先不修改,保持数据库的默认配置。
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': BASE_DIR / 'db.sqlite3',
}
}
3、定义模型
模型在上一节中已经定义好了
4、注册应用
打开settings.py
文件,修改INSTALLED_APPS
项,增加以下内容:
'bh'或'apps.bh',
5、生成迁移文件
python manage.py makemigrations
6、执行迁移文件
python manage.py migrate
根据数据库相关配置,生成数据库。
7、录入测试数据
insert into bh_bookinfo(btitle,bpublish,bread,bcomment,isDelete) values (‘射雕英雄传’,‘1980-5-1’,12,34,0);
insert into bh_bookinfo(btitle,bpublish,bread,bcomment,isDelete) values (‘天龙八部’,‘1986-7-24’,36,40,0);
insert into bh_bookinfo(btitle,bpublish,bread,bcomment,isDelete) values (‘笑傲江湖’,‘1995-12-24’,20,80,0);
insert into bh_bookinfo(btitle,bpublish,bread,bcomment,isDelete) values (‘雪山飞狐’,‘1987-11-11’,58,24,0);
insert into bh_heroinfo(hname,hgender,hbook_id,hcontent,isDelete) values (‘郭靖’,1,1,‘降龙十八掌’,0);
insert into bh_heroinfo(hname,hgender,hbook_id,hcontent,isDelete) values (‘黄蓉’,0,1,‘打狗棍法’,0);
insert into bh_heroinfo(hname,hgender,hbook_id,hcontent,isDelete) values (‘黄药师’,1,1,‘弹指神通’,0);
insert into bh_heroinfo(hname,hgender,hbook_id,hcontent,isDelete) values (‘欧阳锋’,1,1,‘蛤蟆功’,0);
insert into bh_heroinfo(hname,hgender,hbook_id,hcontent,isDelete) values (‘梅超风’,0,1,‘九阴白骨爪’,0);
8、CRUD操作
进入Python Console进行简单的模型API练习
(1)引入需要的包
from apps.bh.models import BookInfo,HeroInfo
from django.utils import timezone
from datetime import *
(2)查询所有图书信息
BookInfo.objects.all()
(3)新建图书信息
b = BookInfo()
b.btitle = "西游记"
b.bpublish = datetime(year=1986,month=10,day=11)
b.save()
(4)查找图书
b=BookInfo.objects.get(pk=1)
b
b.id
b.btitle
(5)修改图书
b.btitle="天龙八部"
b.save()
(6)删除图书
b.delete()
(7)关联对象的操作
h=HeroInfo()
h.hname='test'
h.hgender=True
h.hcontent='hello'
b = BookInfo.objects.get(pk=2)
h.hbook=b
h.save()
(8)返回当前book对象的所有hero
b.heroinfo_set.all()
heroinfo
为模型类HeroInfo
的小写,由Django
识别。
(9)根据图书创建人物
h= b.heroinfo_set.create(hname="lzy",hgender=False,hcontent="ied")
h
(10)找到hero
对象对应的那本书,对应一本书
h.hbook
h.hbook.id 所对应图书的id
h.hbook_id 所对应图书的id
9、思考
如何根据模型迁移到MySQL数据库呢?