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 数据库
对象 记录
对象点属性 字段对应的值

image

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

image

django会嵌入很多的应用,一个应用就是一个具体的业务逻辑,可能会出现不同的应用应用相同的表名,不同的应用建立了相同的表名,那么此时的orm直接将我们建立的模型名作为表明的话就会发生冲突,所以它自动加了一个前缀

image

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')
posted @ 2022-12-10 16:42  dear丹  阅读(45)  评论(0编辑  收藏  举报