ORM
ORM基本操作
1.先在models.py中编写模型类
class GirlsInfo(models.Model):
# 字段名 = 字段类型 + 约束条件
# 原生sql语句,id int primary key auto_increment
id = models.AutoField(primary_key=True) # 类似定义了主键
# 原生sql语句,name varchar(32)
name = models.CharField(max_length=32) # 定义了一个那么字段
# 原生sql语句,pwd int
age = models.IntegerFideld() # 类似于定义了一个pwd的整形字段
ORM关系映射
ORM的存在可以让不会MySQL的python程序员使用python的语法简单快捷得到操作MySQL
ORM | 数据库 |
---|---|
类 | 表 |
对象 | 记录 |
对象点属性 | 字段对应的值 |
2.数据库迁移/同步命令
1.将models中有关数据库的操作记录下来(migration文件夹)
python38 manage.py makemigrations
2.将操作真正影响到数据库中
python38 manage.py migrate
'''当修改models中与数据库相关的代码 都必须执行上诉的命令'''
ps:可以简写,也可以指定应用单独迁移/同步
在终端输入python38 manage.py makemigration,会在migration文件夹中出现一个0001----initial.py文件,里面会记录我们想要创建的模型
# Generated by Django 2.2.22 on 2022-08-31 12:23
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='User',
fields=[
('id', models.AutoField(primary_key=True, serialize=False)),
('name', models.CharField(max_length=32)),
('pwd', models.IntegerField()),
],
),
]
python38 manage.py migrate
django会嵌入很多的应用,一个应用就是一个具体的业务逻辑,可能会出现不同的应用应用相同的表名,不同的应用建立了相同的表名,那么此时的orm直接将我们建立的模型名作为表明的话就会发生冲突,所以它自动加了一个前缀
3.orm会自动添加一个id的主键
表的主键在orm中 可以不写 orm会自动帮你添加一个id的主键,如果你需要主键的名称不叫id 只能自己创建
ORM基本语句
from app01 import models
1.增
models.类名.objects.create()
2.删
models.类名.objects.delete()
3.改
models.类名.objects.update()
4.查
models.类名.objects.filter()
点击查看代码
from django.shortcuts import render, HttpResponse
from app01 import models
# Create your views here.
def login(request):
if request.method == 'POST':
username = request.POST.get('username')
password = request.POST.get('password')
# 删除数据
# models.User.objects.filter(id=5).delete()
# 修改数据
# models.User.objects.filter(id=1).update(name='jasonNB')
# 增加数据
# models.User.objects.create(name=username,pwd=password)
# 查询表数据
# select * from user where name='' and pwd=''
# user_obj = models.User.objects.filter(name=username, pwd=password).first()
# print(res) # <QuerySet [<User: User object (1)>]> 列表套数据对象
# user_obj = res[0]
# if user_obj:
# print(user_obj.id) # 1
# print(user_obj.name) # jason
# print(user_obj.pwd) # 123
# return HttpResponse('登录成功')
# return HttpResponse("用户名或密码错误")
return render(request, 'login.html')