Django连接mysql及orm操作

  • 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)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值