django操作表-models.py(app)
- 1. 创建表;删除表;修改表:在models.py中创建数据库类
class UserInfo(models.Model):
name = models.CharField(max_length=32)
password = models.CharField(max_length=64)
age = models.IntegerField()
相当于:
create table app01_userinfo(
id bigint auto_increment primary key,
name varchar(32),
password varchar(64),
age int)
- 2. 在终端执行命令:注意: APP已提前注册,
在次创建表(删除表:把表注释掉)就再次执行命令
python manage.py makemigrations
python manage.py migrate
在表中新增列时,由于已经存在列中可能已有数据,所以新增列必须要指定列对应的数据:
1. 手动输入一个值
2. 新增列时添加默认值
age = models.IntegerField(default=2)
3. 允许为空
data = models.IntegerField(null=True,blank=True)
以后在开发过程中想要对表结构进项调整:
在models.py文件中操作类即可;
操作表中的数据:可以写在视图函数内(在url请求时就执行数据操作)
根据创建的数据库类操作数据(类名.objects.xxx )
- 1. 新建
UserInfo.objects.create(name="lili", password="321", age=18)
- 2. 删除
UserInfo.objects.filter(id=2).delete() # 根据id=3条件删除
Department.objects.all().delete() # 删除整张表所有数据
- 3. 更新数据
UserInfo.objects.all().update(password=999) # 更新所有数据
UserInfo.objects.filter(id=3).update(password=666) # 更新一条数据
- 4. 获取数据 : data_list=[对象,对象,对象] 得到的是QuerySet类型
data_list = UserInfo.objects.all() # 获取所有数据
for obj in data_list:
print(obj.id, obj.name, obj.password, obj.age)
data_list=[对象,]
data_list=UserInfo.objects.filter(id=3) # 获取一个数据,结果还是一个对象
print(data_list)
或直接获取第一行数据对象,不需要再次循环:
row_obj= UserInfo.objects.filter(id=3).first()
print(row_obj.name)
标签:obj,07,models,数据库,django,objects,UserInfo,data,id
From: https://www.cnblogs.com/kh-1314/p/16877520.html