ORM
ORM的两个作用:
1、创建、修改、删除数据库中的表(不同写SQL,但无法创建数据库,【只能创建数据库中的表)
2、操作表中的数据(例如insert into update select等)【不同写SQL语句】
一、创建、修改、删除数据库中的表
第一步:自己创建数据库
- 启动MySQL服务
- 自带工具创建数据库 打开SQL,代码如下:【1、mysql -u root -p.
- 2 、 show database
- 3、create database 数据库名字 DEFAULT CHARSET utf8 COLLATE utf8_general_ci;】
第二步:django连接数据库(django连接mysql)
在settings.py文件中进行配置和修改(默认sqlite文件)

新代码:
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', # django 连接到mysql 'NAME': 'dbname', # 数据库名字 'USER': 'root',#账户名 'PASSWORD': 'root123'#密码 'HOST': '127.0.0.1', 或者用local house 默认本机# 数据库安装在哪一台服务器上,哪台机器安装了MySQl 'PORT':'3306', # 端口 } }
第三步:django操作表
- 创建表
- 删除表
- 修改表
在models.py文件中:
from django.db import models # Create your models here. class UserInfo(models.Model): # UserInfo继承models里面的类Model name = models.CharField(max_length=32) password = models.CharField(max_length=64) age = models.IntegerField() """ 底层的mysql 语句 create table app01_userinfo( id bigint auto_increment primary key, name varchar(32), password varchar(64), age int ) ""

输入命令将表提交数据库(创建表结构):
python3 manage.py makemigrations #生成迁移文件 (解释器版本3可省略)
python3 manage.py migrate #映射迁移文件命令到数据库
注意:app需要提前注册到setting.py中,如图:

数据库中 查看表结构的命令 show table;
看到表结构 desc app01_userinfo(类名);
查看表的数据 select*from app01_department(类名) ;
在表中新增列时,由于已存在列中可能已有数据,所以新增列必须要指定新增列对应的数据:
- 1、手动输入一个值
- 2、设置默认值
- 3、允许为空
再输入命令:
,更新数据库中的表结构。
二、操作表中的数据
# #########数据库新建数据######## #本质:insert into app01_department(title)value("销售部")【SQL语言】 #Department.objects.create(title="销售部") #UserInfo.objects.create(name="wupeiqi",password="123",age="19") 在views.py中: def login (request): from app01.models import Department,(UserInfo) def orm(request): #测试ORM操作表中的数据 #1、新建数据 Department.objects.create(title="销售部") Department.objects.create(title="IT部") Department.objects.create(title="运营部") UserInfo.objects.create(name="武沛齐",password="123",age=19) UserInfo.objects.create(name="朱虎飞",password="666",age=29) UserInfo.objects.create(name="朱虎飞",password="666") #age就会变成默认值 return HttpResponse("成功")
# 2、删除数据 UserInfo.objects.filter(id=3).delete() #筛选出id=3的数据进行删除. Department.objects.all().delete()#删除Department所有的表. #3、获取数据 # 3.1获取符合条件的所有数据 #data_list=[行,行,行]或者[对象,对象,对象] 得到的是一个列表.QuerySet类型 #通过for循环得到所有数据 #1、 data_list=UserInfo.objects.all() #相当于 select*from app01_department(类名) print(data_list) for obj in data_list: print(obj.id,obj.name,obj.password,obj.age) #2、 data_list=[对象,] data_list=UserInfo.objects.filter(id=1) print(data_list) #3.1 获取第一条数据[对象],得到的就是数据,不需要for循环 row_obj=UserInfo.objects.filter(id=1).first() print(row_obj.id,row_obj.name,row_obj.password,row_obj.age) #4、更新数据 UserInfo.objects.all().update(password=999) UserInfo.objects.filter(id=1).update(age=999) UserInfo.objects.filter(name="朱虎飞").update(age=999)
,更新数据库中的表结构。
浙公网安备 33010602011771号