数据库之对表的增删改查

Posted yehost

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了数据库之对表的增删改查相关的知识,希望对你有一定的参考价值。

ORM--对象关系映射
创建表

技术分享图片
from django.db import models<br>
class Publisher(models.Model):
    name = models.CharField(max_length=30, verbose_name="名称")
    address = models.CharField("地址", max_length=50)
    city = models.CharField(城市,max_length=60)
    state_province = models.CharField(max_length=30)
    country = models.CharField(max_length=50)
    website = models.URLField()
 
    class Meta:
        verbose_name = 出版商
        verbose_name_plural = verbose_name
 
    def __str__(self):
        return self.name
 
class Author(models.Model):
    name = models.CharField(max_length=30)
    def __str__(self):
        return self.name
 
class AuthorDetail(models.Model):
    sex = models.BooleanField(max_length=1, choices=((0, ),(1, ),))
    email = models.EmailField()
    address = models.CharField(max_length=50)
    birthday = models.DateField()
    author = models.OneToOneField(Author)
 
class Book(models.Model):
    title = models.CharField(max_length=100)
    authors = models.ManyToManyField(Author)
    publisher = models.ForeignKey(Publisher)
    publication_date = models.DateField()
    price=models.DecimalField(max_digits=5,decimal_places=2,default=10)
    def __str__(self):
        return self.title

复制代码
View Code

    单表
    关联表:一对一
            一对多(ForeignKey)
            多对多(ManyToMany)

    操作表(行对象操作):
        增---create
                    方式一
                    models.book.objects.create(title="python",price=12)
                    方式二
                    dic={"title":"go","price":45}
                    models.bol.objects.create(**dic)
                    
                    如果有外键:
                    一对多:
                            (1)models.Book.objects.create(title="python",price=12,publish=2)
                             (2) models.Book.objects.create(title="python",price=12,publish=obj)   ---推荐
              save
                    方式一
                    obj=Book(title="python",price=12)
                    obj.save()
                    方式二
                    obj=Book()
                    obj.title="go"
                    obj.price=45
                    obj.save()
        
        删除----delete
                    models.book.objects.filter(id=7).delete()
        
        改----update
                    models.book.objects.filter(id=12).update(title="c++",page_num=320)
        
        查----filter 返回一个valuequeryset序列
          ----all    查所有数据
          ----get()查的是一个对象,否则返回错误
        

对查询的结果再进行处理

1 values(*kwarge)   返回一个valuequeryset——运行后得到一个可迭代的字典序列
2 order_by()            对查询结果进行排序     object1=models.book.objects.order_by("-price")
3 reverse()            对查询结果反向排序
4 distinct()          从返回的结果中剔除重复记录
5 value_list()        返回的一个是元祖序列
6 count()            返回数据库中匹配查询的对象数量
7 first()            返回第一条数据
8 last()            返回最后一条记录
9 exists()            如果queryset包含数据,就返回true,否者返回false

单表查询

1 models.book.objects.filter(id_gt=1,id_it=10)    #获取ID大于1,小于10的值
2 
3 models.book.objects.filter(id_in=[1,3,6])       #获取id=1,3,6的值
4 models.book.objects.exclude(id_in=[1,3,6])      #not in
5 
6 models.book.objects.filter(title_icontains="p")    #title包含p的值
7 models.book.objects.filter(title_statwith="p")    #title以p开头的值

 


       











































以上是关于数据库之对表的增删改查的主要内容,如果未能解决你的问题,请参考以下文章

mysql操作入门基础之对数据库和表的增删改查

【JPA】联表的增删改查(一)many to many

MySQL数据库之表的增删改查

mysql5.7版本的增删改查

MySQL-增删改查简易操作

MySQL-增删改查简易操作