vlambda博客
学习文章列表

Python日常笔记(42)-Django数据库交互

回复“1024”获取持续更新Python系列资料



Django目录介绍


 
init.py:是一个python的包 
settings.py:项目的配置文件 
urls.py:路由配置文件 
wsgi.py:web服务器和Django交互入口(支持WSGI协议) 
manage.py:项目的管理文件

创建应用程序


cmd进入djangoday00目录输入命令:python manage.py startapp testapp(项目名称),就创建好了应用程序。 
Python日常笔记(42)-Django数据库交互 
Python日常笔记(42)-Django数据库交互 
init.py:python模块 
migrations:储存模型类迁移文件 
admin.py:后台管理文件 
models.py:和数据库交互模块 
tests.py:测试代码文件 
views.py:接受请求,处理,与M和T进行交互,返回应答,定义处理视图函数。

应用注册


修改settings.py 中的INSTALLED_APPS配置项,加上刚刚创建的应用程序 
Python日常笔记(42)-Django数据库交互 
然后启动程序,cmd进入D:\pyweb\python-web\djangoday00>输入命令python manage.py runserver 9000(任意写端口号) 
Python日常笔记(42)-Django数据库交互

在models.py定义模型类(BookInfo)


定义模型类,需要继承models.Model类

 
   
   
 
  1. from django.db import models


  2. # 创建一个BookInfo类

  3. classBookInfo(models.Model):

  4. # 图书名称:定义一个字段为btitle,类型为字符串,长度为20

  5. btitle = models.CharField(max_length=20)

  6. # 出版时间:定义一个字段为日期类型

  7. bpub_date = models.DateField()

根据模型类生成数据表


1.生成迁移文件 
cmd进入D:\pyweb\python-web\djangoday00>输入命令python manage.py makemigrations 
Python日常笔记(42)-Django数据库交互
2.执行迁移生成表 
命令:python manage.py migrate 
Python日常笔记(42)-Django数据库交互 
默认生成的数据库是sqlite3小型数据库,查看默认数据库在settings文件中的

 
   
   
 
  1. DATABASES ={

  2. 'default':{

  3. 'ENGINE':'django.db.backends.sqlite3',

  4. 'NAME': os.path.join(BASE_DIR,'db.sqlite3'),

  5. }

  6. }

新增


cmd进入D:\pyweb\python-web\djangoday00>python manage.py shell 
Python日常笔记(42)-Django数据库交互
添加数据

 
   
   
 
  1. from datetime import date

  2. from testapp.models importBookInfo

  3. book =BookInfo()

  4. book.btitle ="天龙八部"

  5. book.bpub_date = date(1990,1,1)

  6. book.save()# 保存数据

查询数据

 
   
   
 
  1. book2 =BookInfo.objects.get(id=1)

  2. book2.btitle

  3. book2.bpub_date

  4. book2.id

显示数据 
Python日常笔记(42)-Django数据库交互


修改和删除


修改时也需要save()方法

 
   
   
 
  1. book2.bpu_date = date(1990,10,2)

  2. book2.bpu_date

  3. # 删除

  4. book2.delete()

Python日常笔记(42)-Django数据库交互

创建外键表


创建HeroInfo类

 
   
   
 
  1. classHeroInfo(models.Model):

  2. # 英雄人物

  3. hname = models.CharField(max_length=20)

  4. # 性别

  5. hsex = models.BooleanField(default=False)

  6. # 备注

  7. hcontent = models.CharField(max_length=128)

  8. # 外键(BookInfo类名)建立HeroInfo和BookInfo外键关系,

  9. hbook = models.ForeignKey(BookInfo, on_delete=models.CASCADE)

注意:django 升级到2.0之后,表与表之间关联的时候,必须要写on_delete参数,否则会报异常

然后退出python manage.py shell命令:exit() 
再次生成迁移文件和表python manage.py makemigrations,python manage.py migrate 
Python日常笔记(42)-Django数据库交互

添加数据以及查询数据

 
   
   
 
  1. # 添加书籍数据

  2. from testapp.models import*

  3. from datetime import date

  4. b =BookInfo()

  5. b.btile ="天龙八部"

  6. b.bpub_date = date(1990,1,1)

  7. b.save()

  8. ## 添加人物类数据

  9. h =HeroInfo()

  10. h.hname ="乔峰"

  11. h.hsex =False

  12. h.hcontent ="降龙十八掌"

  13. h.hbook = b

  14. b.save()

查询数据


1.查询所有图书数据

 
   
   
 
  1. BookInfo.objects.all()

2.查询所有人物数据

 
   
   
 
  1. HeroInfo.objects.all()

3.查询图书下的所有人物

 
   
   
 
  1. b1.heroinfo_set.all()

4.查询单条数据

 
   
   
 
  1. h1 =HeroInfo.objects.get(id=1)