Djang链接mysql

Django 链接mysql(settings.py)
 DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',                    # 你的数据库引擎
        'HOST': "localhost",                                                # 你的数据地址,localhost代表本地
        "PORT": 3306,                                                        # 端口, 数据库的默认端口一般是3306
        "USER": "root",                                                      # 用户名
        "PASSWORD": "mima",                                        # 密码
        "NAME": "study"                                                    # 库名
    }
}

添加APP(settings.py)

# Application definition

INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    #'hello.apps.HelloConfig',
    'my_tools',
    'hello',  #添加APP
]
在APP下的models.py添加
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# Create your models here.
# class Article(models.Model):
#     title = models.CharField(u"标题", max_length=50, null=False)  # 定义一个标题
#     content = models.TextField(u"内容", null=False)  # 定义一个主题内容

#第一个TABLES
class Article(models.Model):
    title = models.CharField(u"标题", max_length=50, null=False)  #定义一个标题
    content = models.TextField(u"内容", null=False)  #定义一个主题
    auther = models.CharField(u"作者",max_length=50, default="")
    status = models.IntegerField(default=1)    # 定义一个字段


#第二个TABLES
class Project(models.Model):
    allnames = models.CharField(u"name", max_length=50, null=False)
# -*- coding: utf-8 -*-
from __future__ import unicode_literals

from django.db import models

# 使用makemigrations 命令需要事项
# 1、一但将生成的migrations文件通过migrate命令同步至数据库以后,被操作的migrations文件不能再操作
# 2、如何避免上面的情况:
#     (1)不要对已经生成好的migrations文件做任何操作
#     (2)所有对数据库的操作同一个人做,并保留好一套migrations文件
#     (3)不要直接在数据库中修改任何操作,比如修改字段,添加字段,删除字段等等;

class Article(models.Model):
    # 如果没有添加主键,django会默认添加一个ID的主键
    title = models.CharField(max_length=50)
    content = models.CharField(max_length=50)
    reply = models.CharField(max_length=50, null=False)
    # 如果是新增的字段
    # 要么设置它允许为空 例:null=True
    # 要么设置一个默认值,例:default=""
    # 这个是数据库的规则,因为如果是新增的字段,
    # 没有默认值或者不允许为空的话,数据库是不知道这个字段要怎么展示
    comment = models.CharField(max_length=50, null=True)
    status = models.IntegerField(default=1)


class Reply(models.Model):
    content = models.CharField(max_length=50)
执行迁移
 python manage.py makemigrations [APPnaem]
 python manage.py migrate [APP name]

django 对数据库的表的修改(如新建、新增、删除表的字段)(表结构)都是在models文件下操作

django 对数据库数据的增删改查
#引入models
from .models import Article,Project

#增加
class ModelTest(View):
    def get(self,request):
        #新增数据方式1
        # article = Article()
        # article.title = "名字11111111111111111"
        # article.content ="内容1111**"
        # article.auther ="作者1111111111"
        # article.save()

        #新增数据方式2
        # Article(title="第二条22222222",
        #         content="内容22222222",
        #         auther="作者22222222",).save()
        return HttpResponse("OK")

#查询
#查询数据库.查询所有的表数据 == select * from  hello_Article;
        arti = Article.objects.all()

#查询单个数据 == select * fron hello_Article id=1
        # pk 等同于ID,主键名
        find1 = Article.objects.get(pk=1)
        find2 = Article.objects.get(id=1)
class ModelClsect(View):
    #数据查询
    def get(self, request):
        arti = Article.objects.all()
        find1 = Article.objects.get(pk=1)
        find2 = Article.objects.get(id=1)
        return render(request,"modelsshow.html",locals())

#删除
        #批量删除:== DELETE FROM hello_Article WHERE id 2 >1
        #找不到数据,不会删除
        Article.objects.filter(status=1).delete()

        #删除单个 == delete from hello_Article where id=1
        #不存在,就报错
        Article.objects.get(id=1).delete()

#修改
        #批量修改数据 update hello_Article status=3 where status=2
        Article.objects.filter(status=2).update(status=3)

        #单个批量修改
        sss = Article.objects.get(status=3)
        sss.status =3
        sss.save()
        #or
        #Article.objects.get(pk=1).save(status=3)

你可能感兴趣的:(Djang链接mysql)