zoukankan      html  css  js  c++  java
  • Django_ORM操作

    #Django默认连接的是sqlite数据库

    1.首先MySQL上创建好数据库

    2.修改Django中settings.py中的DATABASES及INSTALLED_APPS将你的app名字加到末尾(注册app)

    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '你的数据库名称',
            'USER': '你的DB用户名',
            'PASSWORD': '你的DB密码',
            'HOST': '你的mysql地址',
            'PORT': '3306',
        }
    }
    INSTALLED_APPS = [
    'django.contrib.admin',
    'django.contrib.auth',
    'django.contrib.contenttypes',
    'django.contrib.sessions',
    'django.contrib.messages',
    'django.contrib.staticfiles',
    'app01',
    ]
     

     3.修改Django的project同名目录中__init__.py文件

    import pymysql
    pymysql.install_as_MySQLdb()

    #重启project;现在Django连接数据库的方式改为MySQL

     #通过ORM创建表

    #在app中models.py创建类(nid类可以不写,系统会自动创建名为id的自增主键列)

    from django.db import models
    
    class UserInfo(models.Model):
        nid = models.BigAutoField(primary_key=True)
        username = models.CharField(max_length=32)
        password = models.CharField(max_length=64)

     #创建完类和注册app之后执行命令将类通过ORM转化成SQL命令写入到数据库中

    python manage.py makemigrations

    python manage.py migrate

    #执行成功后刷新数据库可看到生成的新的数据表(app01_userinfo是通过类创建的,其他是系统自动创建的)

     #增加列

    #类中添加数据表的列名和类型(后面可以写(null=True)允许为空或指定默认值)
    #修改列名直接改类中的列名然后执行命令 age
    = models.IntegerField(default=1) #执行命令 python manage.py makemigrations python manage.py migrate

    #添加外键

    class UserGroup(models.Model):
        title = models.CharField(max_length=32)
    
    class UserInfo(models.Model):
        nid = models.BigAutoField(primary_key=True)
        username = models.CharField(max_length=32)
        password = models.CharField(max_length=64)
        age = models.IntegerField(default=1)
        ug = models.ForeignKey("UserGroup",on_delete=models.CASCADE,null=True)

    #ORM会在数据库中创建一个列名“ug_id”的列

     #数据表信息操作

    #插入数据

    from app01 import models
    
    def index(request):
        #向UserGroup表中添加数据
        models.UserGroup.objects.create(title='销售部')
        return HttpResponse('数据库操作...')

    #访问url,调用index

    http://127.0.0.1:8000/app01/index.html

     #也可以往用户表里插入数据

    models.UserInfo.objects.create(username='root',password='pwd',age=18,ug_id=1)

    #查询表里数据

    group_list = models.UserGroup.objects.all()
    print(group_list)

    #控制台会输入如下信息

     <QuerySet [<UserGroup: UserGroup object (1)>]>

     #在ORM中类代指的是表,对象代指的一行数据(因为表中只有一条数据,所以列表中有一个对象信息)

     

     #条件查询

    #查询ID等于2的部门

    group_list = models.UserGroup.objects.filter(id__exact=2)
    比较查询
        
        exact:表示判等。
        gt 大于 
        gte 大于等于
        lt 小于 
        lte 小于等于
    
    范围查询
    
         in:是否包含在范围内。

    #修改数据(修改UserGroup表中id=1的title信息改为"公关部"

    models.UserGroup.objects.filter(id=1).update(title="公关部")

     #删除数据(删除UserGroup表中id=4的信息)

    models.UserGroup.objects.filter(id=4).delete()

    * 参考oldboy视频整理

  • 相关阅读:
    Spring Boot中通过CORS解决跨域问题
    使用aop注解实现表单防重复提交功能
    Springboot分别使用乐观锁和分布式锁(基于redisson)完成高并发防超卖
    关于日期格式yyyy-MM-dd和YYYY-MM-dd
    基于Java8的日期时间工具类DateTimeFormatter
    Springboot 配置 ssl 实现HTTPS 请求 & Tomcat配置SSL支持https请求
    springboot+layui实现PC端用户的增删改查 & 整合mui实现app端的自动登录和用户的上拉加载 & HBuilder打包app并在手机端下载安装
    Springboot的日志管理&Springboot整合Junit测试&Springboot中AOP的使用
    Springboot实体类转JSON报错Could not find acceptable representation & 设置访问项目根路径的默认欢迎页面
    SpringMVC 使用@ResponseBody返回json 中文乱码与返回实体类报错
  • 原文地址:https://www.cnblogs.com/sparkss/p/11589530.html
Copyright © 2011-2022 走看看