当前位置:   article > 正文

Django连接mysql及orm操作_django连接数据库mysql

django连接数据库mysql
  • Settings.py文件中设置INSTALLED_APPS,DATABASES

使用MySQL的app必须是注册过的

  •  注册app

  1. INSTALLED_APPS = [
  2.     'myweb.apps.MywebConfig',
  3.     'app01.apps.App01Config',#app01项目下的apps.py文件下的类名
  4. ]
  •   设置数据库的配置

  1. DATABASES = {
  2.     'default': {
  3.         'NAME': 'py',#需要连接的数据库名字
  4.         'ENGINE': 'django.db.backends.mysql',
  5.         'HOST': '127.0.0.1',
  6.         'PORT': '3306',
  7.         'USER': 'root',
  8.         'PASSWORD': '12345678',
  9.     }
  10. }

        'ENGINE': 'django.db.backends.mysql',

        'HOST': '127.0.0.1',

        'PORT': '3306',

这三行都是一样的,【name对应要使用的数据库的名字,user,root,安装过程中自己设置的】

  • 在models.py中添加表

  1. class User(models.Model):
  2. name=models.CharField(max_length=25)#name varchar(25)
  3. password=models.CharField(max_length=64)#password varchar(64)
  4. age=models.IntegerField(default=2)#age int
  5. #creat table app01_User(id bigint auto_increment primary key,name...)
  6. class Department(models.Model):
  7. title=models.CharField(max_length=16)
  8. # class Role(models.Model): 注释掉重新执行两条语句,不在使用此表,并且在数据库中进行删除,表格中的数据不复存在,执行此方法需谨慎
  9. # caption=models.CharField(max_length=16)
  1. python manage.py makemigrations#先执行此条
  2. python manage.py makemigrations --empty app01#修改过表后,执行该操作解决No changes detected错误
  3. python manage.py migrate#在执行该条
  4. #
修改表,新增列【由于已存在列中可能已有数据,所以新增列必须要指定相对应的数据】
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类型】类似二维表,比较好理解,要先取到行在取到列,执行的结果在终端中】

  1. def orm(req):
  2. #添加
  3. # Department.objects.create(title="销售部")#id自动生成,id自增,不会因为删除了前面的id从而上移id
  4. # Department.objects.create(title="IT部")
  5. # Department.objects.create(title="人事部")
  6. # User.objects.create(name="张三",password="123",age=19)
  7. # User.objects.create(name="李四",password="456",age=19)
  8. # User.objects.create(name="王五",password="789")age默认为2
  9. #删除
  10. # User.objects.filter(id=3).delete()#删除id=3的数据
  11. # Department.objects.all().delete()#删除所有数据
  12. #查询
  13. # list_info=User.objects.all()#select * from app01_User
  14. # # print(list_info)
  15. # for i in list_info:
  16. # print(i.id,i.name,i.age)
  17. # datalist=User.objects.filter(name="张三").first()直接获取name=张三的第一行数据的对象
  18. # datalist=User.objects.filter(name="张三")
  19. # for i in datalist:
  20. # print(i.id,i.name,i.age)
  21. #booltf=User.objects.exclude(name='张三').filter(name='张三').exists()#筛选除了name为张三的数据是否存在
  22. #修改
  23. # User.objects.all().update(password=999)
  24. User.objects.filter(name="李四").update(password=999)
  25. return HttpResponse("successful")
'
运行

     update更新数据

from django.db.models import F

导入django自带的F库,例如有表srk,需要在原有基础上修改number或price

  1. 导入表
  2. from app01 import models#区分是哪个app的表
  3. models.srk.objects.filter(id=1).update(number=F('number')-6)

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/黑客灵魂/article/detail/808784
推荐阅读
相关标签
  

闽ICP备14008679号