<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      django數據庫操作

      model 層定義如下

      from django.db import models

      # Create your models here.
      class Types(models.Model):
      id = models.AutoField(primary_key=True)
      firsts = models.CharField('一級類型',max_length=100)
      seconds = models.CharField('二級類型',max_length=100)
      def __str__(self):
      return str(self.id)
      class Meta:
      verbose_name='商品類型'
      verbose_name_plural = '商品類型'

      class CommodityInfos(models.Model):
      id = models.AutoField(primary_key = True)
      name = models.CharField('商品名稱',max_length=100)
      sezes = models.CharField('商品規格',max_length=100)
      types = models.CharField('商品類型',max_length=100)
      price = models.FloatField('商品價格')
      discount = models.FloatField('折后價格')
      stock = models.IntegerField('存貨數量')
      sold = models.IntegerField('已售數量')
      likes = models.IntegerField('收藏數量')
      created = models.DateField('上架日期',auto_now_add=True)
      img = models.FileField('商品主圖',upload_to=r'imgs')
      details = models.FileField('商品介紹',upload_to=r'details')

      def __str__(self):
      return str(self.id)

      class Meta:
      verbose_name ='商品信息'
      verbose_name_plural='商品信息'


      1 打開django的shell模式
      python manage.py shell
      添加操作
      方法一
      t = Types()
      t.firsts = '女裝'
      t.second = '男裝'
      t.save()

      方法二
      #創建
      t= Types.object.create(firsts='兒童用品',seconds='嬰兒車')
      #獲取新增的數據id
      t.id

      方法三
      t = Type(firsts='兒童用品',seconds='嬰兒車')
      t.save()

      查詢數據,沒有就添加一條
      d = dict(firsts = '兒童教育',seconds = '童話書籍')
      t = Type.object.get_or_create(**d)
      print(t)
      結果為
      (<Types: 6>, True)
      說名新加了一條數據
      再次運行出現

      (<Types: 6>, False)

      說明該數據已經存在了。

      可以使用t[0].id獲取對應的id值

       

      如果數據存在就修改,如果數據不存在就添加,注意如果有多條數據符合條件將報錯

      d = dict(firsts = '兒童教育',seconds = '童話書籍')
      t = Types.object.update_or_create(**d,defaults={'firsts':'兒童教育'})
      批量添加操作
      注意d1 d2的寫法,是傳參數的類
      d1 = Types(firsts = '兒童教育',seconds = '童話書籍')

      d2 = Types(firsts = '兒童影視',seconds = '童話動畫')
      obj_list = [d1,d2]
      t = Types.object.bulk_create(obj_list)

      數據更新操作

      方法一
      t = Type.objects.get(id=1)
      t.firsts='兒童用品'
      t.save()
      方法二
      t = Types.objects.filter(id=1).update(seconds='男裝')
      修改id為1的數據,使他的seconds字段變為男裝
      也可以寫成
      d = dict(seconds='男裝')
      t = Types.objects.filter(id=1).update(**d)
      如果不加入filter作為限制項,則修改針對所有數據

      from django.db.models import F

      將某數據在原基礎上加10
      這里需要使用F
      from django.db.models import *
      t= Types.objects.filter(id=1)
      t.update(id=F('id')+10)
      這里是讓id為1的數據的d加10


      刪除數據
      方法一
      刪除全部數據
      Types.objects.all().delete()
      刪除一條數據
      Types.objects.get(id=1).delete()
      刪除多條數據
      Type.objects.filter(firsts='兒童用品').delete()

      如果刪除的數據有其他表關聯,則根據建表時外鍵字段的on_delete的不同有不同的表現
      比如on_delete = models.CASCADE則刪除了一條信息,與之關聯的信息會被直接刪除
      PROTECT模式 刪除有關聯的數據直接提示數據刪除失敗
      SET_NULL模式 將關聯被刪除數據的數據外鍵設為null,建表時必須允許外鍵為null才可以否則爆炸
      SET_DEFAULT模式 將被刪除的外鍵字段改為設置好的默認值
      SET模式 將關聯數據被刪除的數據的外鍵關聯到其他的數據
      DO_NOTHING模式 不做任何處理,刪除結果由數據庫的刪除看模式決定




      添加2張表,model如下
      from django.db import models

      # Create your models here.
      class PersonInfo(models.Model):
      id = models.AutoField(primary_key=True)
      name = models.CharField(max_length=20)
      age = models.IntegerField()
      hireDate = models.DateField()

      def __str__(self):
      return self.name

      class Meta:
      verbose_name = '人員信息'

      class Vocation(models.Model):
      id = models.AutoField(primary_key=True)
      job = models.CharField(max_length=20)
      title = models.CharField(max_length=20)
      payment = models.IntegerField(null=True,blank=True)
      name = models.ForeignKey(PersonInfo,on_delete=models.CASCADE,related_name='ps')

      def __str__(self):
      return str(self.id)
      class Meta:
      verbose_name='職業信息'

      查詢操作
      from index.models import *

      查詢表中所有數據:
      v = Vocation.objects.all()
      查看第一條信息的職業
      print(v[0].job)
      查詢前三條數據
      v = Vocation.objects.all()[:3]
      查詢單個字段 數據以元組加列表的形式返回
      v = Vocation.object.values('job')
      數據以字典的形式返回
      v = Vocation.objects.values()

      使用get方法查詢
      t = Vocation.objects.get(id=1)
      print(t.job)

      使用filter也可以按照條件查詢,但是是查詢多條的
      v = Vocation.objects.filter(id=3)
      print(v[0].job)

      filter多條件 查詢
      v = Vocations.objects.filter(id=3,title='前臺文員')
      這里是根據多個條件查詢內容
      也可以根據字典定義
      d = dict(id=1,title='前臺文員')
      v = Vocation.objects.filter(**d)
      但是這里有問題,這里的條件是等于,如果想搞個大于或者大于等于則需要使用一些特定的寫法

      __exact 精確等于 like ‘aaa’
      __iexact 精確等于 忽略大小寫 ilike ‘aaa’
      __contains 包含 like ‘%aaa%’
      __icontains 包含 忽略大小寫 ilike ‘%aaa%’,但是對于sqlite來說,contains的作用效果等同于icontains。
      __gt 大于
      __gte 大于等于
      __lt 小于
      __lte 小于等于
      __in 存在于一個list范圍內
      __startswith 以…開頭
      __istartswith 以…開頭 忽略大小寫
      __endswith 以…結尾
      __iendswith 以…結尾,忽略大小寫
      __range 在…范圍內
      __year 日期字段的年份
      __month 日期字段的月份
      __day 日期字段的日
      __isnull=True/False
      __isnull=True 與 __exact=None的區別

      舉個例子:

      v = Vocation.objects.filter(id__gt=2, title='前臺文員')

      查詢的是id大于2且title等于前臺文員

      這里還得注意一下,等于可以用=,不等不能用!=,如果要表示不等使用~表示,后面會介紹

      如果想查詢或這種關系的條件可以使用Q,不過Q需要引用

      from django.db.model import Q

      v = Vocation.objects.filter(Q(id=1)|Q(job='網頁設計'))

      sql中的不等于查詢條件的寫法

      v = Vocation.objects.filter(~Q(job='網站設計'))

      另一種寫法:

      v = Vocation.objects.exclude(job='前臺設計')

      統計一共多少條數據

      v = Vocation.objects.count()

      根據id倒序排序同時根據job排序

      v = Vocation.objects.order_by('-id','job')

      對某一個字段進行去重操作,下面這個還加個條件

      v = Vocation.objects.values('job').filter(job='網站設計').distinct()

      聚合查詢,實現對數據值求和求平均值

      ·主要使用annotate和aggregate,其他的還有求2個查詢結果的交集等等方法

       多表查詢

       







      posted @ 2020-12-11 15:45  豬啊美  閱讀(264)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 一区二区三区午夜福利院| 久久被窝亚洲精品爽爽爽| 国产精品成人va在线播放| 亚洲国产精品综合久久20| 福泉市| 美女胸18下看禁止免费视频| 好吊妞无缓冲视频观看| 久久久久久亚洲精品成人| 亚洲精品日本一区二区| 人妻熟女av一区二区三区| 亚洲综合区激情国产精品| 国产系列高清精品第一页| 加勒比亚洲天堂午夜中文| 久久久久免费看成人影片| 国产乱子伦一区二区三区四区五区 | 国产成人精品无码免费看| 定南县| 人人玩人人添人人澡超碰| 国产精品福利自产拍久久| 色噜噜一区二区三区| 国产成人综合久久亚洲av| 色噜噜噜亚洲男人的天堂| 洛阳市| 成人国产精品免费网站| 国产精品日韩中文字幕熟女| 日韩少妇人妻vs中文字幕| 婷婷综合缴情亚洲| 欧美成年性h版影视中文字幕| 99亚洲男女激情在线观看| 亚洲国产精品久久久久婷婷图片| 亚洲中文字幕成人综合网| 无遮无挡爽爽免费视频| 亚洲在av极品无码天堂| 亚洲第一精品一二三区| 欧美老少配性行为| 亚洲国产欧美在线观看片| 午夜高清国产拍精品福利| 亚洲不卡av不卡一区二区| 久久国产乱子伦免费精品无码| 午夜在线欧美蜜桃| 激情自拍校园春色中文|