Django 用模型查询mysql数据库

添加数据

第一种:views中添加数据如下:在学生表中添加数据

# Student是模型(models.py)中创建的学生类
Student.objects.create(
    stu_name = '张三',
    stu_sex = '男',
    stu_birth = '2018-4-5',
    stu_chinese = 89,

)

第二种添加数据的方式:

stu = Student(stu_name = '张三',
              stu_sex = '男',
              stu_birth = '2018-4-5',
              stu_chinese = 89)
stu.save()

删除数据

删除表中所有的数据

Student.objects.all().delete()

删除stu_name =’张三’的数据

Student.objects.get(stu_name ='张三').delete()

删除年龄等于20的多条数据

Studnt.objects.filter(stu_age = 20).delete()

更新数据

第一种方式:把名字为张三的记录的数据修改为李四

# 先查到要修改的记录
stu = Student.objects.get(stu_name ='张三')
# 修改名字
stu.name = '李四'
# 提交修改(保存)
stu.save()

第二种方式:

Student.objects.get(stu_name = '张三').update(stu_name = '李四')

查询数据

数据库表中的关系:

  • 一对一的关系:OneToOneField
  • 一对多的关系 : ForeignKey
  • 多对多的关系: ManyToManyField

两张表一对一关系的查询:

# 通过扩展表的学生地址去查找学生的信息
#查找addr =成都武侯区的学生的信息
#第一种方法 (第一种方法太耗数据库性能,因为要查循两次数据库)
stus = StudentInfo.objects.filter(stu_addr='成都武侯区')
stu = stus[0]
selstu = Student.objects.filter(id = stu.id)
#第二种方法
stus = StudentInfo.objects.filter(stu_addr='成都武侯区')
stu=stus[0]
#第一个stu是获取的学生的对象,就是stus[0],第二个stu是模型中定义和Student一对一关联的字段
selstu = stu.stu



# 通过学生表去查找学生拓展表的信息
    # 查找stu_name = 张三的家庭住址
    # 第一种方法(两次查询太耗数据库性能)
    stu = Student.objects.filter(stu_name='张三').first()
    selstu = StudentInfo.objects.filter(id=stu.id)
    print(stu.id)
    # 第二种方法
    stu = Student.objects.filter(stu_name='张三').first()
    selstu = stu.studentinfo

两张表(班级表,和学生表),一对多的关系查询

# 查询python班级下的学生e
    #方法一(太耗数据库性能)
     g = Grade.objects.get(g_name ='python')
     stus = Student.objects.filter(g_id = g.id)
    #方法二
    g = Grade.objects.get(g_name='python')
    stus = g.student_set.all()
    print(stus)


# 查询叫李白的同学的班级信息
     stu = Student.objects.get(stu_name = '李白')
     gs = stu.g

两张表(用户表和购买物品表)多对多的关系

# 获取小乔购买的商品
u = GoodsUser.objects.filter(u_name='小乔')[0]
    goods = u.goods_set.all()

    # 获取购买娃哈哈用户的信息
    g = Goods.objects.get(g_name='娃哈哈')
    users = g.g_user.all()
    return render(request,'goods.html',
                  {'goods':goods,'users':users})
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值