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)