Django(三)模型:ORM框架、定义模型类并创建⼀个对应的数据库、配置
Mysql数据库
⼀、模型概述
Django 为这些数据库提供了统⼀的调⽤API。 我们可以根据⾃⼰业务需求选择不同的数据库。
MySQL 是 Web 应⽤中最常⽤的数据库。本章节我们将以 Mysql 作为实例进⾏介绍。你可以通过本站的 MySQL 教程 了解更多Mysql的基础知识。
⼆、ORM框架简介
django中内嵌了ORM框架,ORM框架可以将类和数据表进⾏对应起来,只需要通过类和对象就可以对数据表进⾏操作。
在Django中主要是设计类:模型类。
ORM另外⼀个作⽤:根据设计的类⽣成数据库中的表。
Django的ORM框架
O(objects):类和对象。
R(Relation):关系,关系数据库中的表格。
M(Mapping):映射。
Django ORM框架的功能:
a)建⽴模型类和表之间的对应关系,允许我们通过⾯向对象的⽅式来操作数据库。
b)根据设计的模型类⽣成数据库中的表格。
c)通过⽅便的配置就可以进⾏数据库的切换。
三、定义模型类以实现数据库表的建⽴
D:\a\django-app\project1>tree /f
│ db.sqlite3
│ manage.py
├─app1
││ admin.py
││ apps.py
││ models.py
││ tests.py
││ views.py
││ __init__.py
││
│├─migrations
│││ __init__.py
└─project1
│ asgi.py
│ settings.py
│ urls.py
│ wsgi.py
│ __init__.py
3.1定义模型类,并在数据库⽣成对应的表
第1步,在models.py定义类(\pj1\app-te1\models.py)
from django.db import models
# 设计和表对应的类,模型类
# Create your models here.
# ⼀类
# 图书类
class BookInfo(models.Model):
'''图书模型类'''
# 图书名称,CharField说明是⼀个字符串,max_length指定字符串的最⼤长度
btitle = models.CharField(max_length=20)
# 出版⽇期,DateField说明是⼀个⽇期类型
bpub_date = models.DateField()
第2步,⽣成迁移⽂件
命令:python manage.py makemigrations
迁移⽂件是根据模型类⽣成的。
会在⽣成⼀个迁移⽂件:app1\migrations\0001_initial.py
> py manage.py makemigrations
# Migrations for 'app1':
# app1\migrations\0001_initial.py
# - Create model BookInfo
0001_initial.py 详情:
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies =[
]
operations =[
migrations.CreateModel(
搜索下拉菜单怎么删除name='BookInfo',
fields=[
delete键在键盘的哪里('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')), ('btitle', models.CharField(max_length=20)),
('bpub_date', models.DateField()),
],python变量输入字母
),
]
第3步,执⾏迁移⽂件,在数据库⽣成表
命令:python manage.py migrate
根据迁移⽂件,在数据库⽣成表。(默认是sqlite数据库)
⽣成表名的默认格式:应⽤名_模型类名⼩写
执⾏详情:
D:\a\django-app\project1>py manage.py migratemysql面试题csdn
Operations to perform:
Apply all migrations: admin, app1, auth, contenttypes, sessions
Running migrations:
Applying contenttypes. OK
Applying auth. OK
Applying admin. OK
Applying admin.0002_logentry_remove_ OK
Applying admin.0003_logentry_add_action_ OK
Applying app1. OK
Applying contenttypes.0002_remove_content_ OK
Applying auth.0002_alter_permission_name_ OK
Applying auth.0003_alter_user_email_ OK
Applying auth.0004_alter_user_ OK
Applying auth.0005_alter_user_last_ OK
Applying auth.0006_require_ OK
Applying auth.0007_alter_validators_add_ OK
Applying auth.0008_alter_user_username_ OK
Applying auth.0009_alter_user_last_name_ OK
Applying auth.0010_alter_group_name_ OK
Applying auth.0011_update_ OK
Applying sessions. OK
注:⽣成的表放在数据库 【db.sqlite3】 内,表详情如下(booktest_bookinfo应为app1_bookinfo)
第4步,通过模型类操作数据表:
进⼊项⽬shell的命令:
python manage.py shell
以下为在相互shell终端中演⽰的例⼦:
0)⾸先导⼊模型类:
dels import BookInfo,HeroInfo
1)向booktest_bookinfo表中插⼊⼀条数据。
b = BookInfo()#定义⼀个BookInfo类的对象
b.btitle ='天龙⼋部'#定义b对象的属性并赋值
b.bpub_date = date(1990,10,11)
b.save()#才会将数据保存进数据库
2) 查询出booktest_bookinfo表中id为1的数据。
b = (id=1)
3) 在上⼀步的基础上改变b对应图书的出版⽇期。
b.bpub_date = date(1989,10,21)
b.save()#才会更新表格中的数据
4) 紧接上⼀步,删除b对应的图书的数据。
b.delete()#才会删除
5) 向booktest_heroInfo表中插⼊⼀条数据。
h = HeroInfo()
h.hname = '郭靖'
h.hgender = False
h.hcomment = ‘降龙⼗⼋掌’
b2 = (id=2)
h.hbook = b2 #给关系属性赋值,英雄对象所属的图书对象
h.save()
6) 查询图书表⾥⾯的所有内容。
BookInfo.objects.all()
HeroInfo.objects.all()
第4步实操记录,增、删、改、查
D:\a\django-app\project1>py manage.py shell
Python 3.7.1(v3.7.1:260ec2c36a, Oct 202018,14:57:15)[MSC v.191564 bit (AMD6 4)] on win32
Type "help","copyright","credits"or"license"for more information. (InteractiveConsole)
>>>dels import BookInfo
>>> b=BookInfo()
>>> b.btitle='天龙⼋部'
>>>from datetime import date
>>> b.bpub_date=date(1998,1,2)
>>> b.save()
>
#【★★★查寻所有数据】
>>> BookInfo.objects.all()
<QuerySet [<BookInfo: BookInfo object(1)>]>
#【★★★查询单条数据】获取id=1的BookInfo信息
>>> b2=(id=1)
jqueryremove怎么打开>>>type(b2)
<dels.BookInfo'>
>>> b2
<BookInfo: BookInfo object(1)>
#【查看对应数据】
>>> b2.btitlehibernate下载不了
'天龙⼋部'
>>> b2.bpub_date
datetime.date(1998,1,2)
>>> b2.id
1
#【更新对应数据】,要保存之后才会⽣效
>>> b2.bpub_date=date(1991,2,2)
>>> b2.save()
b2.delete()#也可删除对应数据
b.delete()# 删除刚刚插⼊的数据
第5步,再加⼀个models.py类,且加上关联
再加⼀个models.py类,定义⼀个新数据表,且与BookInfo类表建⽴关联
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论