Django-----(六)数据库

1.ORM系统

对象关系映射(Object Relational Mapping)
像操作对象一样从数据库操作数据

模型类必须卸载app下的models.py文件中

1.1 连接数据库

settings.py文件中配置DATABASES

DATABASES=[
	'default':{
		'ENGINE':'django.db.backends.mysql',
		'NAME': 'myblog',
        'USER':'pybaby',
        'PASSWORD':'881212',
        'HOST':'127.0.0.1',
        'PORT':'3306',
}
]

1.2 把pymyql作为连接器

安装pymyql

在主目录__init__.py文件中写入

import pymysql
pymysql.install_as_MySQLdb()

1.3注册APP

1.4新建模型类

class User(models.Model):
    id = models.AutoField(primary_key=True)
    name = models.CharField(max_length = 50,null = False)
    age = models.IntegerField()
    create_time = models.DateField(auto_now_add = True)
    update_time = models.DateTimeField(auto_now = True)

1.5 在manage.py中执行命令

makemigrations
migrate

1.6 插入数据

定义视图函数

方法一:

def add_user(request):
    taka =User(name = 'taka',age = 18)
    taka.save()
    return HttpResonse('插入成功')

方法二:

def add_user(request):
    taka =User()
    taka.name = 'taka',
    taka.age = 18
    taka.save()
    return HttpResonse('插入成功')

方法三:

def add_user(request):
    User.objects.create(name = 'taka',age = 18)
    return HttpResponse('插入成功')

方法四:
User.objects.get_or_create(name = ‘taka’,age = 18)

1.7数据查询

view视图函数中
re = User.objects.all() 返回query_set对象,可直接用list强制转换
re = User.objects.get(id=1) 返回一个模型类,值不唯一时会报错
re =User.objects.filter(name=‘taka’) 返回query_set对象
re =User.objects.filter(name=‘taka’).first() 返回一个模型类

重写,更改输出格式

def __str__(self):
	return 'id=%s,name=%s,age=%s' %(self.id,self.name,self.age)

查询常用方法:
re = User.objects.all()
re = User.objects.all().first()
re = User.objects.all().last()
re = User.objects.filter(name = ‘xiaopo’)
re = User.objects.exclude(name = ‘xiaopo’)
re = User.objects.get(name = ‘xiaopo’)
re = User.objects.order_by(‘age’)
re = User.objects.order_by(‘age’,‘id’) 多项排序
re = User.objects.order_by(‘-age’) 逆向排序
re = User.objects.all().values() 转为字典格式
re = User.objects.all().count() 返回数量

常用查询条件:
exact 相当于等号
re = User.objects.filter(name__exact=‘xiaopo’)

contains 包含
re = User.objects.filter(name__contains=‘xiaopo’)

startwith 以…开头
re = User.objects.filter(name__startwith=‘xiao’)

endwith 以…结尾
re = User.objects.filter(name__endwith=‘xiao’)

in 成员所属
re = User.objects.filter(age__in=[18,19,20])

gt 大于
gte 大于或等于
lt 小于
lte 小于或等于
range 区间
re = User.objects.filter(age__range=(18,20))

isnull 判断是否为空
re = User.objects.filter(city__isnull=True)

1.8 数据修改

view视图函数中

方法一:字典键值对修改

re = User.objects.get(id=1) 
re.name = 'tizi'
re.save()
return HttpResponse('修改成功')

方法二:update方法

re =User.objects.filter(name='taka') 
re.update(name='xiaoming')
return HttpResponse('修改成功')

update方法的的对象需要一个query_set对象
可以批量修改数据

1.9 删除数据

re = User.objects.get(id=1)
re.delete()
return HttpResponse('删除')

delete方法对一个模型类或query_set对象都适用

1.10 常用字段

IntegerField
CharField
TextField
DateField
DateTimeField
BooleanField
NullBooleanField

creat_time=models.DateField(auto_now_add=True) 自动创建插入时间
update_time=models.DateTimeField(auto_now=True) 自动更新时间 只对save方法响应 对update方法不响应。

1.11常用参数

primary_key
unique
null
blank
default

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值