美文网首页
Django&mysql

Django&mysql

作者: 山高路远_海深不蓝 | 来源:发表于2018-11-27 20:50 被阅读0次

    Django创建数据库


    配置settings.py


    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'userinfor',
            'USER': 'root',
            'PASSWORD': 'lztv',
            'HOST': '127.0.0.1',
            'PORT': 3306
        }
    }
    

    创建表格

    • models.py文件
    from django.db import models
    class user(models.Model):
        account = models.CharField(max_length=64, primary_key=True)
        passwd = models.CharField(max_length=16)
    

    注册


    • admin.py文件
    from .models import *
    admin.site.register(user)
    

    同步数据库

    • 初始化

    python manage.py makemigrations

    • 迁移

    python manage.py migrate

    数据库可视化

    • 创建超级管理员

    python manage.py createsuperuser

    • 设置管理员

    输入用户名,跳过邮箱,输入密码(两次输入)

    浏览器查看

    • 打开浏览器输入

    http://127.0.0.1:8000/admin

    操作Mysql

    • 查询所有

    models.user.objects.all()

    • 只取account列

    models.user.objects.all().values('account')

    • 取出acount和password列,并生成一个列表

    models.user.objects.all().values_list('account','password')

    • get方法获取

    models.user.objects.get(account='lz')
    models.user.objects.get(password='lztv')

    导包管理


    models.py

    from django.db import models

    views.py

    # json解析
    import json
    # 渲染网页
    from django.shortcuts import render
    # 网页回应
    from django.http import HttpResponse
    # 导入数据模型
    from .models import *
    # csrf验证
    from django.views.decorators.csrf import csrf_exempt
    

    admin.py

    from django.contrib import admin
    # 导入数据模型
    from .models import *
    

    操作mysql


    查询

    @csrf_exempt
    def select(request):
        if request.method == 'POST':
            select = request.POST.get('select')
            if select == 'all':
                result = Account.objects.all()
                data = {}
                for obj in result:
                    account = obj.account
                    password = obj.password
                    data[account] = password
                return HttpResponse(json.dumps({'code': 200, 'msg': json.dumps(data)}))
            elif select == 'not_all':
                account = request.POST.get('account')
                if len(account) != 0:
                    result = Account.objects.filter(account=account).first()
                    if result is not None:
                        password = result.password
                        data = {account:password}
                        return HttpResponse(json.dumps({'code': 200, 'msg': json.dumps(data)}))
                    else:
                        return HttpResponse(json.dumps({'code': 400, 'msg': '未查询到此用户!'}))
                else:
                    return HttpResponse(json.dumps({'code': 400, 'msg': '账户名不能为空!'}))
    

    添加

    @csrf_exempt
    def add_data(request):
        if request.method == 'POST':
            account = request.POST.get('account')
            if Account.objects.filter(account=account).count() == 0:
                password = request.POST.get('password')
                Account.objects.create(account=account, password=password)
                return HttpResponse(json.dumps({'code': 200, 'msg': '添加成功!'}))
            else:
                return HttpResponse(json.dumps({'code': 400, 'msg': '此用户已存在!'}))
    

    更新

    @csrf_exempt
    def update_infor(request):
        if request.method == 'POST':
            account = request.POST.get('account')
            obj = Account.objects.filter(account=account)
            if obj is not None:
                obj.update(password='admin')
                return HttpResponse(json.dumps({'code': 200, 'msg': '密码重置为admin'}))
            else:
                return HttpResponse(json.dumps({'code': 400, 'msg': '重置失败!'}))
    

    删除

    @csrf_exempt
    def delect_infor(request):
        if request.method == 'POST':
            account = request.POST.get('account')
            obj = Account.objects.get(account=account)
            if obj is not None:
                obj.delete()
                return HttpResponse(json.dumps({'code': 200, 'msg': '删除信息成功!'}))
            else:
                return HttpResponse(json.dumps({'code': 400, 'msg': '删除失败!'}))
    

    修改models

    增加字段只需重新初始化,以下针对修改表结构

    • 删除app下的migrate文件夹

    • 数据库修改

    如果已存在的数据无意义且数据量不大,删除数据库,重建

    不删除数据库,打开相应的数据库,删除app的相关信息

    • delete from django_migrations where app = 'app_name';

    相关文章

      网友评论

          本文标题:Django&mysql

          本文链接:https://www.haomeiwen.com/subject/gavwqqtx.html