Django 基础 6

12月24日任务
1.1 ORM基础—ORM补充 
1.2.1 增删改查之查询 
1.2.2 删改增 (1) 
1.2.3 删改增 (2)
Django配置绑定MySQL数据库
在setting.py找到DATABASES
DATABASES = {
    'default': {
         'ENGINE': 'django.db.backends.mysql',
         'NAME': 'Django', #数据库名
         'USER': 'root',  #用户名
         'PASSWORD': '123456',  #密码
         'HOST': 'localhost',  #指定MySQL数据库电脑IP
         'PORT': '3306',
    }
}
 
问题  缺少MySQLdb包
Error loading MySQLdb module: No module named 'MySQLdb
 
解决
pip install pymysql -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com
 
在项目目录下__init__.py 添加下面参数
import pymysql
pymysql.install_as_MYSQLdb()
 
ORM基础
在model.py中每一个类对应的数据的每一个表 ,他们都是继承models.Model类
 
模型类的属性和选项
格式: 属性名 = models.字段类型(选项)
 
使用时要引入django.db.models包
 
类型
AutoField 自动增加的整型 一般不指定,用于ID
BooleanField 布尔值 值为True或False
NullBooleanField 值为Null True或False
CharField(max_length =最大长度) 字符串 max_length 表示最大字符个数
TextField 大文本字段
IntegerField 整型
DecimalField(max_digits = 数字,decimal_places=数字) 十进制浮点 多用于金钱 max_digits表示总位 decimal_places表示小数位数
FloatField 浮点型 参数同上
DateField([auto_now=Flase,auto_now_add=False]) 日期 auto_now表示修改日期 auto_now_add表示创建日期 两个参数同时只能存在一个
TimeField 时间 参数同上
DateTimeField 日期时间 参数同上
FileField 上传文件字段
ImageField 继承FileField 同于上传图片
 
选项
default 默认值
primary_key True 该字段为模型的主键字段,默认是False 一般作为AutoField选项使用
unque True 该字段在表中必须唯一
db_index True 在表中为此建立索引
de_column 指定数据表字段的名字 de_column='title'
null True 允许该数据表的字段为空 默认False
blank True 允许该后台管理页面上字段为空 默认False
 
选择default和blank 不影响表结构,不需要重新做迁移
 
模型类关系
1)一对多关系
models.ForeignKey() 定义在多类中
 
2)多对多关系
models.ManyToManyField() 定义在哪个类中都可以
 
3)一对一关系
models.OneToOneField() 定义在哪个类中都可以
 
关联查询(一对多)
在一对多关系中,一对应的类交一类,多对应的类叫多类。在多类中定义的建立关联的类属性叫做关联属性。
 
通过模型类对象实现关联查询
 
一类查多类所有信息  
格式: 一类对象.多类名.set.all()
 
多类查一类所有信息 
格式: 多类对象.关系属性
e49457df5dee78788e7fe13d41841878260.jpg
 
 
示例
查询id为1的图书关联的英雄信息
b= BookInfo.objects.get(id=1)
b.heroinfo_set.all()
 
查询id为1的英雄关联的图书信息
h = HeroInfo.objects.get(id=1)
h.hbook
 
单表查询
通过模型类.objects调用下面函数
 
函数 功能 
get 返回表中满足条件的 一条数据 返回模型类对象
all 返回表中所有数据 返回QuestSet(查询集)对象的列表 可遍历
fiiter 返回满足条件的数据 返回QuestSet对象的列表 后跟.first().last()取第一个/最后一个值
exclude 返回不满足条件的数据 返回QuestSet对象
order_by 对查询结果进行排序 返回QuestSet对象 默认是升序
 
查询id是2的值
user = UserInof.objects.get(id=2)
 
查询所有值
user = UserInof.objects.all()
 
查询密码是123456的值,可多个
user = UserInof.objects.filter(passwd='123456')
 
单表增加
create 增加数据
 
增加一条名字叫王五,密码是123456的数据
user = UserInof.objects.create(user='王五',passwd='123456')
 
单表删除
delete 删除数据,基于查询的前提
 
删除user叫王五的信息
user = UserInof.objects.filter(user='王五').delete()
 
单表修改
update 修改数据,基于查询的前提
save 修改数据,基于查询的前提
 
把id是2的user改为王五
user = UserInof.objects.filter(id=2).update(user='王五')
或者
user = UserInof.objects.get(id=2)
user.user='王五'
user.save()

转载于:https://my.oschina.net/u/3803568/blog/2992232

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值