单表操作
测试脚本
当你只想测试django某一个py文件的内容,可以不用书写前后端的交互,直接写一个测试脚本即可
单表删除
数据库操作方法:
1.all():查询所有的数据
2.filter():带有过滤条件的查询
3.get():直接拿数据对象,不存在则报错
4.first():拿queryset里面的第一个元素
5.last():拿queryset里面的最后一个元素
6.values():获取指定的数据字段(可以看成是列表套字典的形式)
select app01_user.age from app01_user where name=’haha’;
7.values_list():获取指定的数据字段(可以看成是列表套元组的形式)
8.distinct():去重
9.order_by():排序
10.reverse():反转,前提是数据已经排序过了,如果没排序,无法反转
11.count():统计当前数据的个数
12.exclude():排除在外
13.exists():判断某个对象是否存在
queryset对象内部封装了sql语句,可以通过对象.query查看
第二种查看sql语句:去settings.py中写入一段话,之后每次运行时可以看到
LOGGING = {
'version': 1,
'disable_existing_loggers': False,
'handlers': {
'console': {
'level': 'DEBUG',
'class': 'logging.StreamHandler',
},
},
'loggers': {
'django.db.backends': {
'handlers': ['console'],
'propagate': True,
'level': 'DEBUG',
},
}
}
神奇的双下划线查询
总结:
1.数据表名:django默认以小写应用名_类名作为数据库表名
2.关于主键:django会为表创建自动增长的主键列,每个模型类中只能有一个主键列,如果使用选项设置某属性为主键列,之后django不会再创建自动增长的主键列.默认创建的主键列属性为id,可以用pk代替
3.字段类型
(1)AutoField:自动增长的IntegerField.通常不指定,django会自动创建一个
(2)BooleanField:布尔值字段,值为True或False
(3)NullBooleanField:值为Null,True或False
(4)CharField:字符串,参数max_length表示最大字符数(必须指定)
(5)TextField:大文本字段,一般超过几千个字符的时候使用
(6)IntegerField:整数(范围有限,不能存手机号)
(7)DecimalField:浮点数,参数max_digits表示总位数,参数decimal_places表示小数位
(8)FloatField:浮点型
(9)DateField:年月日
参数:auto_now表示每次修改保存对象时,设置当前时间
auto_now_add表示当创建对象时,设置当前时间
两个参数互斥
(10)TimeField:时间.参数同DateField
(11)DateTimeField:日期时间.参数同DateField
(12)FileField:上传的文件的
(13)ImageField:继承FileField,对上传的文件进行校验,确保是图片
(14)EmailField:邮箱字段(在数据库中就是varchar(255),但是对于后面要将的内容有区分)
4.字段参数
null:表示某个字段可以为空
default:设置默认值
unique:如果设置为True,表示字段唯一
db_column:字段的名称,如果未定,则使用属性名称
db_index:若值为True,则在表中为字段创建索引
primary_key:主键(True)
5.关系字段
ForeignKey:外键,参数
to:要关联的表,
to_field:要关联的字段
on_delete:当删除关联表中的数据时,当前表与关联表的行为,一般用models.CASCADE
OneToOneField:一对一字段,参数同
ForeignKey
ManyToManyField:多对多,会自动创建第三张表