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

猜你喜欢

转载自www.cnblogs.com/Liang-jc/p/9180980.html