Django对于数据库的基础知识
发布日期:2022-03-02 13:23:45
浏览次数:33
分类:技术文章
本文共 2746 字,大约阅读时间需要 9 分钟。
Django生成数据库表结构
我们对于数据库的操作,于app里的models.py文件中编写,当我们编写时,首先得在工程中是settings上找到INSTALLED_APPS中添加下图,创建app名叫啥就填啥然后我们打开models.py文件,首先 class创建数据库括号内必填models和Model,然后下方即创建数据类型,CharField即字符串即该值的类型,常用的有数字 字符串 时间,max_length即字符长度,在创建时,会自动生成一个id列,自增及主键,至此我们简单表结构就设计好了,如果不设置表名 会自动生成为:
app名_userinfo 然后切换到我们的pycharm,底部找到Terminal,先输入 1.python manage.py makemigrations 2.python manage.py migrate 我们的数据库结构就创建成功了,保存在目录下db.sqlite中 那么接下来我们就学习对数据库进行增删改查,首先我们在views.py文件下定义一个orm方法,用于进行数据库操作 首先导入views下导入modelsfrom app import models
1.数据库增加创建 1.1orm下编写mdoels.数据库名.objects.create(对应结构名=‘添加的值’)
通过以下方法,也是可以达成创建增加数据库的方法 还可以通过传字典的方式,不过字典名必须加上** 数据库查找 all即是查找所有,查找到的值是一个整体,就是以每一行的值返回,需要查看所有值可以 循环此命名,然后打印值 上面介绍了查所有,来看看指定查询filter的用法,大致一样,filter后面括号接条件即可 result = models.cmdbku.objects.filter(username='root',password='123')
数据库删除
models.cmdbku.objects.filter(id=3).delete(),filter改为all即删除所有
数据库修改
首先找到要修改的数据再使用update进行修改数据 当我们生成好数据库时添加数据库表结构的时候,添加多一列的时候,输入python manage.py makemigrations 提示输入1后会让你输入值,意思是让你输入之前生成的列在此新成的行下的值 再执行 python manage.py migrate 即可成功生成
Django ORM字段介绍
Django ORM字段参数介绍
null 是否可以为空 default默认值 primary_key 主键 db_column 设置列明 db_index 索引 unique唯一索引 unique_for_xx截段做索引 只对xx部分做索引 auto_now创建时自动生成时间 auto_now_ad调用时更新为当前时间choices | 在django admin中显示下拉框 避免链表查询,首先命名创建一个元组,choices=命名
blank |django admin是否可以为空,null是在数据库中
verbose_name | django admin显示字段中文
editable | django admin是否可以被编辑 False不可被编辑,该列会直接被隐藏help_text | django admin提示
外键关联 在某一个数据库下编写下面语句,关联别的数据库,to_field表示要跟哪个字段关联,默认则是关联主键,Django2.0中必须加上on_delete,用于设置关联表中数据删除时,执行啥啥啥操作,想要详细了解的可以百度一下自命名=models.ForeignKey('被关联数据库名',to_field='uid',default=1,on_delete=models.DO_NOTHING)
关联之后,会生成两个对象,自命名_id和自命名 自命名中包括了被关联表的所有数据,然后即可可调用被关联表的值,当我们需要自命名的username值时
1.首先外键关联表让1表关联2表
我们是通过1表外键关联2表,那么如何通过1表获取2表的值呢?
2.首先 我们通过数据库找到1表中的所有值,并传给html 3.通过for循环将值显示出来,如以row循环上方的user_list,则获取2表的数据则是 row.user_group.username 即可获取2表的数据 获取表单数据的三种方式 获取时末尾有values的获取都是字典,有value_list获取都是元组,其余都是获取的对象 v1是将获取的各行数据获取封装在在对象中 v2是以字典的方式获取,可以获取指定内容 v3是以元组方式获取,调用时使用索引神奇的双下划线
大于小于 xx__gt代表获取大于xx的数据 lt则代表小于在t后面加e则代表大于等于或小于等于 跨表查询 当我们将数据库表中值获取后,传给html页面,可以通过点‘.’外键再点‘.’进行跨表查询。 但是当我们获取数据库表时,在values内想获取外键关联表中的指定的数据,用点‘.’的方式获取是会报错的,如下 这时我们就要用到我们神奇的双下划线 将下划线中的b.caption改为b__caption 一对多块表操作的三种方式 1.values情况下在上面我介绍了获取表单的三种方式,当我们只想获取指定类型的数据是外键关联的表时在查找zhongfilter(条件).values(内添加了双下划线,如b__caption) 我们在html页面调用时也要使用b__caption才会显示值 2.values_list情况下 上面values获取的是字典,而我们通过values_list获取的是元组的模式,其中也有b__caption获取其他表的值,当在html页面调用时,则是根据values_list里的索引进行赋值,不用写上b__caption,仅是values情况下才要写 **3.all情况下:**这种是最简单的上面说过,当我们获取时是all获取全部数据的时候,我们只需要根据点‘.’进行跨表查询即可,下图其中的b是外键关联的命名 html页面for循环的计数器 当我们看别人表格前,前方都有个序号,只添加id的话做不到同步,当for循环时,会有一个参数 forloop.counter用于计数,就是一个计数器 forloop.count0即为从0开始计数 revcounter则为反着来 加0则从0开始反着来 小扩展:forloop.last和first为判断该列是否最后一个和第一个,是则返回True 否则False转载地址:https://blog.csdn.net/WOSHIBEIZHE/article/details/120480145 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
留言是一种美德,欢迎回访!
[***.207.175.100]2024年04月10日 02时43分44秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
说说 Python 正则表达式的匹配类型
2019-04-26
说说 Python 的贪心和非贪心匹配策略
2019-04-26
说说在 Python 中,如何找出所有字符串匹配
2019-04-26
说说 Python 正则表达式中的那些字符类别码
2019-04-26
说说 Spring Boot 的条件化注解
2019-04-26
说说如何使用 Python 在 word 中创建表格
2019-04-26
Python 基础知识考题与解答(2020 版)
2019-04-26
说说 Oracle 的 SYSDATE 函数
2019-04-26
说说 Oracle 的 NVL 与 NVL2 函数
2019-04-26
说说 TCP 协议以及三次握手流程
2019-04-26
说说 Oracle 的 TRUNC 函数
2019-04-26
系统架构设计笔记(41)—— 系统过渡计划
2019-04-26
系统架构设计笔记(42)—— 软件架构概述
2019-04-26
系统架构设计笔记(57)—— 测试自动化与面向对象的测试
2019-04-26
系统架构设计笔记(58)—— 嵌入式系统概论
2019-04-26
说说 Python 的生成器表达式
2019-04-26
说说 Activiti 中的用户与组的概念
2019-04-26
系统架构设计笔记(62)—— 嵌入式数据库管理系统
2019-04-26
系统架构设计笔记(63)—— 实时嵌入式操作系统
2019-04-26