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视频整理

  • 相关阅读:
    Thinking in java(八)-正则表达式
    order by与索引
    order by与索引
    004_常量的设置
    008_ajax没有跳转页面的错误
    007_缺少aspactj依赖
    006_为什么我的本机地址是0.0.0.0.0.1
    005_mybatis逆向工程错误
    004_当用数据库账号密码不对时?
    059_SSM——JDK动态代理是怎么回事?它又是怎么运用到了SSM框架中的?
  • 原文地址:https://www.cnblogs.com/sparkss/p/11589530.html
Copyright © 2011-2022 走看看