慕课网-Django入门到进阶-更适合Python小白的系统课程-第4章Django中的ORM和数据库-4.4数据库的增删改
第4章 Django 中的 ORM 和数据库
4.4.数据库的增删改
创建方法
方法1:User.objects.create(xx=xx, xx=xx)
方法2:user = User(xx=xx, xx=xx) user.save()
方法3:User.objects.get_or_create(xx=xx, xx=xx)
方法4:user = User() user.xx = xx user.save()
平描淡写获取方法
user = User.objects.get(id=xx)
Users = User.objects.all()
更新方法
方法1:user.object.update(xx=xx, xx=xx)
方法2:user.xx = xx user.save()
Ps user = User.object.filter(id=xx) 获得
删除方法
user = User.objects.get(id=xx)
user.delete()
实例
1.在项目 Four 下目录 app,修改文件 views.py
#coding: utf-8
from django.db import models
class Test(models.Model):
name = models.IntegerField()
class User(models.Model):
username = models.CharField(unique=True, max_length=50, blank=False)
age = models.SmallIntegerField(default=0)
phone = models.IntegerField(db_index=True, blank=True, default=0)
email = models.EmailField(blank=True, default='')
info = models.TextField()
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
class Meta:
index_together = ['username', 'phone']
class Userprofile(models.Model):
user = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL)
birthday = models.CharField(max_length=100, blank=True, default='')
class Diary(models.Model):
user = models.ForeignKey(User, related_name='diary', on_delete=models.SET_NULL, blank=True, null=True)
content = models.TextField()
create_time = models.IntegerField()
class Group(models.Model):
user = models.ManyToManyField(User, related_name='group')
name = models.CharField(max_length=20)
create_time = models.IntegerField()
2.在项目 Four 下目录 app/migrations,删除数字开头的数据文件
3.进入数据库删除 lession4,重新添加数据库 lession4
drop database lession4; create database lession4 default charset=utf8;
4.命令窗口重新创建所有的数据库表
python manage.py makemigrations python manage.py migrate

5.进入数据库测试
use lession4 show tables; show create table app_user;


6.在命令行窗口进入 shell 在表 app_user 添加数据
python manage.py shell from app.models import User user = User.objects.create(username='dewei', age=33, phone=1551551555, email='dewei@muke.com', info='这家伙很懒'); user user.id user.username user = User.objects.get(id=1) user

7.在项目 Four 下目录 app,修改文件 views.py 的类 User,自定义属性
#coding: utf-8
from django.db import models
class Test(models.Model):
name = models.IntegerField()
class User(models.Model):
username = models.CharField(unique=True, max_length=50, blank=False)
age = models.SmallIntegerField(default=0)
phone = models.IntegerField(db_index=True, blank=True, default=0)
email = models.EmailField(blank=True, default='')
info = models.TextField()
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
class Meta:
index_together = ['username', 'phone']
def __str__(self):
return 'user:{}'.format(self.username)
class Userprofile(models.Model):
user = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL)
birthday = models.CharField(max_length=100, blank=True, default='')
class Diary(models.Model):
user = models.ForeignKey(User, related_name='diary', on_delete=models.SET_NULL, blank=True, null=True)
content = models.TextField()
create_time = models.IntegerField()
class Group(models.Model):
user = models.ManyToManyField(User, related_name='group')
name = models.CharField(max_length=20)
create_time = models.IntegerField()
8.测试,在命令行窗口首先必须退出原 shell,重新进入 shell
exit() python manage.py shell from app.models import User user = User.objects.get(id=1) user

9.在命令行窗口进入 shell 用另外的方法在表 app_user 再添加一条数据
user = User(username='xiaoming', age=18, phone=1551551111, email='xiaoming@muke.com', info='xxxx') user.save() user user.id

10.在命令行窗口进入 shell,修改表 app_user 的数据
user.age = 19 user.save() user user.age

11.在命令行窗口进入 shell 使用 vars(返回对象 object 的属性和属性值的字典对象)
vars _user = vars(user) _user

12.在命令行窗口进入 shell 删除表 app_user 的数据
user.delete() # 抛出异常 user = User.objects.get(id=2) # 使用 filter 查询不会抛出异常 user = User.objects.filter(id=2) user

13.在项目 Four 下目录 app,修改文件 views.py 的类 Userprofile,自定义属性
#coding: utf-8
from django.db import models
class Test(models.Model):
name = models.IntegerField()
class User(models.Model):
username = models.CharField(unique=True, max_length=50, blank=False)
age = models.SmallIntegerField(default=0)
phone = models.IntegerField(db_index=True, blank=True, default=0)
email = models.EmailField(blank=True, default='')
info = models.TextField()
create_time = models.DateTimeField(auto_now_add=True)
update_time = models.DateTimeField(auto_now=True)
class Meta:
index_together = ['username', 'phone']
def __str__(self):
return 'user:{}'.format(self.username)
class Userprofile(models.Model):
user = models.OneToOneField(User, blank=True, null=True, on_delete=models.SET_NULL)
birthday = models.CharField(max_length=100, blank=True, default='')
def __str__(self):
return 'user:{}, birthday:{}'.format(self.user.username, self.birthday)
class Diary(models.Model):
user = models.ForeignKey(User, related_name='diary', on_delete=models.SET_NULL, blank=True, null=True)
content = models.TextField()
create_time = models.IntegerField()
class Group(models.Model):
user = models.ManyToManyField(User, related_name='group')
name = models.CharField(max_length=20)
create_time = models.IntegerField()
14.在命令行窗口进入 shell 在表 app_userprofile、app_group、app_diary、app_group_user 添加数据
from app.models import Userprofile, Diary, Group user = User.objects.get(id=1) user user_profile = Userprofile.objects.create(user=user, birthday='1986-0-24') user user_profile import time diary = Diary.objects.create(user=user, content='今天又是雾霭', create_time=time.time()) diary group = Group(name='运营', create_time=time.time()) group.save() group.user.add(user) group vars(group) user = User.objects.create(username='小明', age=18, phone=1551551111, email='xiaoming@muke.com', info='xxx') user group = Group(name='开发', create_time=time.time()) group.save() group.user.add(user) group vars(group) from app.models import Group from app.models import User user = User.objects.get(id=1) group = Group.objects.get(id=2) group.name group.user.add(user)

15.进入数据库测试
use lession4 show tables; select * from app_user; select * from app_diary; select * from app_group; select * from app_group_user; select * from app_userprofile;




posted on 2020-01-30 09:45 herisson_pan 阅读(13) 评论(0) 收藏 举报
浙公网安备 33010602011771号