Django学习——django ORM、orm实操、字段的增删改查、数据的增删改查
django orm
"""
orm:对象关系映射
"""
orm目的就是为了能够让不懂SQL语句的人通过python面向对象的知识点也能够轻松自如的操作数据库
面向对象的类 》》》 表
对象 》》》 表里面的数据
对象点属性 》》》 字段对应的值
# 缺陷: sql 封装死了 有时候查询速度很慢
orm实操
1.我们的模型类需要写在应用下的models.py文件中
class User(models.Model):
# id int primary key auto_increment
id = models.AutoField(primary_key=True)
# name varchar(32)
name = models.CharField(max_length=32) # CharField必须要加max_length参数
# age int
age = models.IntegerField()
*************************************************************************************************
2.数据库迁移命令
1.将数据库修改操作先记录到小本本上(对应应用下的migrations文件夹)
python3 manage.py makemigrations
D:\mysite1>python manage.py makemigrations
Migrations for 'app01':
app01\migrations\0001_initial.py
- Create model User
2.真正的执行数据库迁移操作
python3 manage.py migrate
第一次执行数据库迁移命令Django默认需要创建依赖表
表名自动加前缀 目的是为了避免多个应用出现表名冲突的情况发生
# 只要动了models.py中跟数据库相关的代码就必须重新执行上述两条命令
**************************************************************************************************
3.针对主键字段
class User1(models.Model):
# 如果你不指定主键 那么orm会自动帮你创建一个名为id的主键字段
# 如果你想让主键字段名不叫id 叫uid、sid、pid等需要自己手动指定
username = models.CharField(max_length=32)
字段的增删改查
# 增
pwd = models.IntegerField('密码', null=True) # 该字段可以为空
is_delete = models.IntegerField(default=0) # 默认值
# 改
直接改代码然后执行数据库迁移命令即可
# 删
注释掉代码然后执行数据库迁移命令即可
数据的增删改查
# 1.查询数据
# select * from user where name=username and pwd=password;
# res = models.User.objects.filter(name=username) # <QuerySet [<User: User object>]> 列表套数据对象
user_obj = models.User.objects.filter(name=username,pwd=password).first()
# <QuerySet [<User: User object>]> 列表套数据对象
# user_obj = res[0]
# 2.添加数据
# insert into user(name,pwd) values(username,password);
models.User.objects.create(name=username,pwd=password)
# 3.查询所有的数据
# select * from user; 作了分页处理
user_data = models.User.objects.all() # [obj1,obj2,obj3,obj4]
return render(request, 'home.html',{'user_data':user_data})
# 4.修改数据
models.User.objects.filter(id=edit_id).update(name=username,pwd=password)
# 第二种修改方式
edit_obj.name = username
edit_obj.pwd = password
edit_obj.save()
# 5.删除数据
models.User.objects.filter(id=delete_id).delete()
越往后学越简单 只不过过程是复杂的
本文来自博客园,作者:寻月隐君,转载请注明原文链接:https://www.cnblogs.com/QiaoPengjun/p/16200932.html