- Settings.py文件中设置INSTALLED_APPS,DATABASES
使用MySQL的app必须是注册过的
-
注册app
INSTALLED_APPS = [
'myweb.apps.MywebConfig',
'app01.apps.App01Config',#app01项目下的apps.py文件下的类名
]
-
设置数据库的配置
DATABASES = {
'default': {
'NAME': 'py',#需要连接的数据库名字
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': '3306',
'USER': 'root',
'PASSWORD': '12345678',
}
}
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': '3306',
这三行都是一样的,【name对应要使用的数据库的名字,user,root,安装过程中自己设置的】
-
在models.py中添加表
class User(models.Model):
name=models.CharField(max_length=25)#name varchar(25)
password=models.CharField(max_length=64)#password varchar(64)
age=models.IntegerField(default=2)#age int
#creat table app01_User(id bigint auto_increment primary key,name...)
class Department(models.Model):
title=models.CharField(max_length=16)
# class Role(models.Model): 注释掉重新执行两条语句,不在使用此表,并且在数据库中进行删除,表格中的数据不复存在,执行此方法需谨慎
# caption=models.CharField(max_length=16)
python manage.py makemigrations#先执行此条
python manage.py makemigrations --empty app01#修改过表后,执行该操作解决No changes detected错误
python manage.py migrate#在执行该条
#
修改表,新增列【由于已存在列中可能已有数据,所以新增列必须要指定相对应的数据】 1 provice... 手动提供一个数据,填补新增列,在migrate 2 quit... 在code 中设置一个默认值,例如age=models.IntegerField(default=20) 不想出现上面两种情况就在代码中设置其允许为空data=models.CharField(null=True,blank=True)
执行完后,会在数据库中生成一堆表,要用的只有app01_user,app01_department两张表
#User.objects.create(id="one",name="张三",moblie="1861234543",password="123456")#insert into app01_user(id,name,moblie,password)value("one","张三","1861234543","123456"`)
-
在urls.py中添加路径用来测试是否连接成功
path(‘orm/’,views.orm)#注意不要丢了斜杠
-
在views.py中添加对应的函数
导入import models.app01 import Department,User
【filter相当于sql语句中的where,查询出来的数据是【QuerySet类型】类似二维表,比较好理解,要先取到行在取到列,执行的结果在终端中】
def orm(req):
#添加
# Department.objects.create(title="销售部")#id自动生成,id自增,不会因为删除了前面的id从而上移id
# Department.objects.create(title="IT部")
# Department.objects.create(title="人事部")
# User.objects.create(name="张三",password="123",age=19)
# User.objects.create(name="李四",password="456",age=19)
# User.objects.create(name="王五",password="789")age默认为2
#删除
# User.objects.filter(id=3).delete()#删除id=3的数据
# Department.objects.all().delete()#删除所有数据
#查询
# list_info=User.objects.all()#select * from app01_User
# # print(list_info)
# for i in list_info:
# print(i.id,i.name,i.age)
# datalist=User.objects.filter(name="张三").first()直接获取name=张三的第一行数据的对象
# datalist=User.objects.filter(name="张三")
# for i in datalist:
# print(i.id,i.name,i.age)
#booltf=User.objects.exclude(name='张三').filter(name='张三').exists()#筛选除了name为张三的数据是否存在
#修改
# User.objects.all().update(password=999)
User.objects.filter(name="李四").update(password=999)
return HttpResponse("successful")
update更新数据
from django.db.models import F
导入django自带的F库,例如有表srk,需要在原有基础上修改number或price
导入表
from app01 import models#区分是哪个app的表
models.srk.objects.filter(id=1).update(number=F('number')-6)