zoukankan      html  css  js  c++  java
  • django 笔记4 数据库操作

    django操作数据库
    orm操作
    select * from tb where id > 1
    对应关系
    models.tb.objects.filter(id__gt=1)
    models.tb.objects.filter(id=1)
    models.tb.objects.filter(id__lt=1)
    
    创建类
            1  -根据类自动创建数据库表
            #models.py操作
            #######################################
            from django.db import models
            # Create your models here.
    
            #表名会默认为app01_userinfo
            class UserInfo(models.Model):
                #创建用户名列 字符串类型 指定长度
                #默认会创建个id列 且自增 为主键
                username = models.CharField(max_length=32)
                password = models.CharField(max_length=64)
            #######################################
            python manage.py makemigrations
    
            No changes detected 表示要去找models 所以在settings中的 INSTALLED_APPS=[添加个app名称]
            migrations记录了生成数据库表结构的一些数据0001_initial.py
            python manage.py migrate 生成数据库且会生成表
    
            2  -根据类对数据库表中的数据进行各种操作
    
    若要改为MySQL连接 需要改settings  数据库配置文档 www.cnblogs.com/wupeiqi/articles/5237704.html
    DATABASES = {
            'default':{
            'ENGINE':'django.db.backends.mysql',
            'NAME':'dbname',
            'USER': 'root',
            'PASSWORD': 'xx',
            'HOST':'',
            'PORT':''
        }
    }
        注意:
        MySQLdb模块在Python3是没有的
        在project中的__init__.py 即settings同级的__init__.py文件添加
        import pymysql
        pymysql.install_as_MySQLdb()
    
    
        增删改查
        #################################################################
        from app01 import models
    def orm(request):
        #创建数据的方法1  一行插入数据
        models.UserInfo.objects.create(
            username='root',
            password='123'
        )
        #创建数据的方法2
        obj = models.UserInfo(username='ljc',password='123')
        obj.save()
    
        #创建数据方法3
        dic = {'username':'eric', 'password':'123'}
        models.UserInfo.objects.create(**dic)
        return HttpResponse('orm')
    
    def select(request): #查找数据
        result = models.UserInfo.objects.all() #表示所有数据都拿到
        #result QuerySet 是Django提供的 可以理解为列表[]
        #[obj1(id, username, password), obj2, obj3] 是UserInfo的对象
        for row in result:
            print(row.id,row.username, row.password)
    
        result = models.UserInfo.objects.filter(username="root") #查找条件 username='root'的 如果username,password 是and共同拥有
        for i in result:
    
            print(i.username)
        return HttpResponse(result[1])
    
    def delete(request):  #删除数据
        models.UserInfo.objects.filter(id=4).delete()  #filter类似where条件
        return HttpResponse(123)
    
    def update(request):  #修改数据
        models.UserInfo.objects.all().update(password=666)  #将密码全部改为666
        return HttpResponse(123)
        #################################################################
  • 相关阅读:
    装饰器函数(一)
    面向对象的初阶复习
    内置函数/反射/内置方法(单例类面)
    property特殊属性/类方法/静态方法
    多态/封装
    接口类抽象类
    初始继承之顺序/深度优先及广度优先
    类涉及的空间关系及组合(可变项地址面)
    <head></head>
    让IE6 IE7 IE8 IE9 IE10 IE11支持Bootstrap的解决方法
  • 原文地址:https://www.cnblogs.com/Liang-jc/p/9180980.html
Copyright © 2011-2022 走看看