欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

Django实现对数据库的增删改查

程序员文章站 2022-03-02 22:24:55
...

直接上代码

def show_user(request):
    dict={}
    if request.POST:

        if 'add' in request.POST:
            id = request.POST['id']
            name = request.POST['name']
            age = request.POST['age']
            sex = request.POST['sex']
            mobile = request.POST['mobile']
            User.objects.create(userNum=id, name=name, age=age, sex=sex, mobile=mobile)
        # elif 'del' in request.POST:
        #     delname = request.POST['delname']
        #     User.objects.filter(name=delname).delete()

        elif 'modify' in request.POST:
            mdf_name = request.GET.get('mdf_name')
            mdf_age = request.POST['mdf_age']
            User.objects.filter(name=mdf_name).update(age=mdf_age)
        elif 'find' in request.POST:
            find_name = request.POST['find_name']
            findu = User.objects.filter(name__contains=find_name)
            if find_name != '':
                dict['findu']=findu
            else:
                pass

    elif request.GET.get('user_id'):
        d_id = request.GET.get('user_id')
        User.objects.filter(userNum=d_id).delete()

    # shows = User.objects.order_by('userNum')
    shows = User.objects.extra(select={'num': 'userNum+0'})
    shows = shows.extra(order_by=['num'])
    dict['shows']=shows



    # 生成paginator对象,定义每页显示5条记录
    paginator = Paginator(shows,5)
    try:
        page_number = request.GET.get('onpage', '1')
        page = paginator.page(page_number)
    except (PageNotAnInteger, EmptyPage, InvalidPage):
        page = paginator.page(1)
    dict['page'] = page


    return render(request, 'show.html',dict)

① 对数据表进行写入操作

# 表.objects.create

# 方法一
a = User.objects.create(userNum=123, name='ABB', age=18, sex='男')

# 方法二
d = dict(userNum=123, name='ABB', age=18, sex='男')
a = User.objects.create(**d)

#方法三
a = User(userNum=123, name='ABB', age=18, sex='男')
a.save()
get_or_create 只要有一个字段值与数据表中不相同(除主键),就会执行插入操作
如果完全相同则不进行插入操作,而是返回这行数据的数据对象
update_or_create 判断当前数据在数据表中是否存在,若存在则进行更新,否则为新增表数据
bulk_create 对数据进行批量操作
v1 = User(userNum=123, name='ABB', age=18, sex='男')
v2 = User(userNum=124, name='ABC', age=19, sex='女')
info_list = [v1,v2]
User.objects.bulk_create(info_list)

②对数据表进行删除操作

# 表.objects.filter().delete()

# 方法一 删除全部内容
User.objects.all().delete()

#方法二 删除一条name为ABC的数据
User.objects.filter(name='ABC').delete()

#方法三 删除多条数据
User.objects.filter(age=18).delete()

删除过程中数据设有外键字段,就会同时删除外键关联的数据,删除模式参考models.py中设置的PROTECT、SET_NULL等

③对数据表进行修改

# 表.objects.filter().update()

# 方法一 修改name为ABC的性别为gay
User.objects.filter(name='ABC').update(sex='gay')

# 方法二 
a = dict(age='1')
User.objects.filter(name='ABC').update(**a)

# 方法三 使用F方法实现自增/自减
from djanto.db.models import F
User.objects.filter(name='ABC').update(age=F('age')+1)

④对数据表进行查询

# select * from User 全表查询
a = User.objects.all()
# 查第一条
a[0].name

# select * from User LIMIT3 查前3条
a = User.objects.all()[:3]

# filter 也可添加多个条件
User.objects.filter(name='ABC',age=18)

# SQL中or方法

相关标签: django