1. 程式人生 > >資料庫之對錶的增刪改查

資料庫之對錶的增刪改查

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開頭的值