赞
踩
使用MySQL的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,安装过程中自己设置的】
- 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"`)
path(‘orm/’,views.orm)#注意不要丢了斜杠
导入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)
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。