Django&mysql

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)