Django笔记---sqlite操作

Django笔记—sqlite操作

第一次写博客,只为记录自己的成长,也作为自己的笔记。

1. 首先利用django自带sqlite创建两张表
并不需要用到原生的SQL语句,我们只需要在model.py中写两个类,之后在终端执行两个命令,Django并会自动为我们生成。

from django.db import models

#UserType表
class UserType(models.Model):
    title = models.CharField(max_length=32)

#UserIfo
class UserIfo(models.Model):
    name = models.CharField(max_length=64)
    age = models.CharField(max_length=64)
    #与UserType关联
    ut = models.ForeignKey('UserType')

#写完上面连个类后在终端执行两个命令 
#1. python manage.py makemigrations
#2. python manage.py migrate

写完上面连个类后在终端执行两个命令

(1). python manage.py makemigrations
(2). python manage.py migrate

这样就帮我们生成了两张表,直接可以在pycharm查看:
Django笔记---sqlite操作_第1张图片

2. 接下来往表中插入数据
这里要注意的是用来关联UserType表的字段,写的时候是ut,实际上Django生成了一个ut_id的int类型字段,它代表的是UserType表中一行数据

 #创建数据 UserType表
    models.UserType.objects.create(title='普通用户')
    models.UserType.objects.create(title='黄金用户')
    models.UserType.objects.create(title='牛逼用户')
    models.UserType.objects.create(title='二逼用户')
    models.UserType.objects.create(title='超级用户')
 #创建数据 UserIfo表
    models.UserIfo.objects.create(name='小帅男',age=18,ut_id=1)
    models.UserIfo.objects.create(name='张琪',age=20,ut_id=2)
    models.UserIfo.objects.create(name='毛剑锋',age=25,ut_id=3)
    models.UserIfo.objects.create(name='田如寅',age=23,ut_id=4)
    models.UserIfo.objects.create(name='冯波',age=22,ut_id=5)
    models.UserIfo.objects.create(name='程凯',age=21,ut_id=4)

查看结果:
Django笔记---sqlite操作_第2张图片
Django笔记---sqlite操作_第3张图片
3.对表进行增删改查
查:

  #获取数据
    # user_list数据类型为:QuerySet 
    # user_list = models.UserIfo.objects.all()
    # print(user_list)
    # for row in user_list:
    #通过关联ut字段取关联表----正向操作
        #print(row.id,row.name,row.age,row.ut_id,row.ut.title)


    # obj = models.UserType.objects.all().first()
    # print(obj.id,obj.title)
    # 可通过与之关联的表名小写(userifo)+_set,反向取与之关联的表--反向操作
    # for u in obj.userifo_set.all():
    #     print(u.name,u.age)



    #加values(),那么遍历每一个row为字典类型{'id': 1, 'name': '小帅男', 'age': '18', 'ut_id': 1}
    # 这种方式不能遍历跨表,必须在获取数据时一并跨表获取,
    #result=models.UserIfo.objects.all().values('name','age','ut__title')
    # print(result)
        # for row in result:
    #     print(row['name'],row['age'],row['ut__title'])





    # 加values_list(),那么遍历每一个row为元组类型:(1, '小帅男', '18', 1),
    # 这种方式不能遍历跨表,必须在获取数据时一并跨表获取,ut__title
    # result = models.UserIfo.objects.all().values_list('name','age','ut__title')
    # print(result)
    # for row in result:
    #     print(row[0], row[1],row[2])

改:


    # models.UserIfo.objects.filter(name='小帅男').update(ut_id='2')  # 将指定条件的数据更新,均支持 **kwargs
    # obj = models.UserIfo.objects.get(id=2)
    # obj.age = '111'
    # obj.save()                                                 # 修改单条数据

删:

 # models.UserIfo.objects.filter(name='seven').delete() # 删除指定条件的数据

增:上面已经描述非常清楚

你可能感兴趣的:(django,sqlite,python)