慕课网-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)    收藏  举报

导航