日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区

您的位置:首頁技術(shù)文章
文章詳情頁

Django bulk_create()、update()與數(shù)據(jù)庫事務(wù)的效率對比分析

瀏覽:268日期:2024-10-06 08:07:23

下面以創(chuàng)建10000個對象為例進行測試:

# 用for循環(huán)挨個創(chuàng)建,共花費37秒 for i in range(10000): name='String number %s'%i Record.objects.create(name=name) # 用django事務(wù)只提交一次,共花費2.65秒@transaction.commit_manuallydef manual_transaction(): for i in range(10000): name='String number %s'%i Record.objects.create(name=name) transaction.commit() # 用bulk_create創(chuàng)建,共花費0.47秒def builtin(): insert_list =[] for i in range(10000): name='String number %s'%i insert_list.append(Record(name=name)) Record.objects.bulk_create(insert_list) # 用for循環(huán)挨個更新,共花費72秒:def auto_transaction(): for record inRecord.objects.all(): record.name ='String without number' record.save() # 用django事務(wù)只提交一次,共花費17秒@transaction.commit_manuallydef manual_transaction(): for record inRecord.objects.all(): record.name ='String without number' record.save() transaction.commit() # 用update更新,共花費0.33秒def builtin(): Record.objects.all().update(name='String without number')

補充知識:django的model使用上容易遇到的坑,default=datetime.now和auto_now、null和blank、save和update、bulk_create

一、django設(shè)置字段動態(tài)默認(rèn)時間的四種方式:

from django.db import modelsfrom datetime import datetimeclass User(models.Model): id = models.BigAutoField(’主鍵’, primary_key=True) name = models.CharField(’名字’, max_length=20, db_index=True, default=’’) create_time_one = models.DateTimeField(’創(chuàng)建時間’, default=datetime.now()) update_time_one = models.DateTimeField(’更新時間’, default=datetime.now) create_time_tow = models.DateTimeField(’創(chuàng)建時間’, auto_now_add=True) update_time_tow = models.DateTimeField(’更新時間’, auto_now=True)

1. default=datetime.now()

model每次初始化,都會自動設(shè)置該字段的默認(rèn)值為初始化時間。

2. default=datetime.now

model每次進行新增或修改操作,都會自動設(shè)置該字段的值為操作時間。設(shè)置后仍可以使用ORM手動修改該字段。

3. auto_now_add=True

默認(rèn)值為False,若設(shè)置為True,model每次進行新增操作,都會自動設(shè)置該字段的值為操作時間。設(shè)置為True后無法使用ORM手動修改該字段,哪怕填充了字段的值也會被覆蓋。

4. auto_now=True

默認(rèn)值為False,若設(shè)置為True,model每次進行新增或修改操作,都會自動設(shè)置該字段的值為操作時間。設(shè)置為True后無法使用ORM手動修改該字段,哪怕填充了字段的值也會被覆蓋。

5. 要注意的點

除非想設(shè)置動態(tài)默認(rèn)時間為項目的啟動時間,否則default=datetime.now()這種用法是錯誤的,會得到期望之外的結(jié)果。

使用User.objects.update方法時,設(shè)置的default=datetime.now和auto_now=True都不會生效,由于設(shè)置了auto_now=True的字段不能手動修改,此時只能使用save方法修改數(shù)據(jù),這對于多個數(shù)據(jù)的更新是不友好的。

因此如果設(shè)置動態(tài)默認(rèn)時間的字段,應(yīng)該使用default=datetime.now和auto_now_add=True來實現(xiàn)。

二、null=True和blank=True的區(qū)別

1. null針對數(shù)據(jù)庫,如果null=True,表示數(shù)據(jù)庫的該字段可以為空。

2. blank針對表單的,如果blank=True,表示表單填寫該字段時可以不填。

mysql中空值不占用空間,NULL占用空間,而且使用NULL會使索引的效率下降。因此從性能上來說,不建議使用null=True,最好使用default=’’。

三、save和build_create的區(qū)別

1. 使用save方法:

names = [’張三’, ’李四’]for name in names: user = User(name=name) user.save() print(user.id) # 此時user對象有id的值

2. 使用bulk_create方法:

names = [’張三’, ’李四’]users = [User(name=name) for name in names]users = User.objects.bulk_create(users)print([user.id for user in users]) # 此時user對象沒有id的值

bulk_create的優(yōu)點:

批量操作時只與數(shù)據(jù)庫進行一次交互,效率高。

bulk_create的缺點:

對于設(shè)置了自增的字段,返回值中不會有該字段的值,如上例2中的user對象。

對于設(shè)置了動態(tài)默認(rèn)時間的字段,如設(shè)置了auto_now=True,同一批處理的記錄中該字段的時間將會相同。

四、上面的知識點使用的例子

1. 定義模型

from django.db import modelsfrom datetime import datetime class User(models.Model): id = models.BigAutoField(’主鍵’, primary_key=True) name = models.CharField(’名字’, max_length=20, db_index=True, blank=False, default=’’) create_time = models.DateTimeField(’創(chuàng)建時間’, auto_now_add=True) update_time = models.DateTimeField(’更新時間’, default=datetime.now)

2. 插入數(shù)據(jù)

# 方法一names = [’張三’, ’李四’]users = [User(name=name) for name in names]users = User.objects.bulk_create(users) # 方法二names = [’張三’, ’李四’]users = [User(name=name) for name in names][user.save() for user in users]

3. 修改數(shù)據(jù)

# 方法一names = [’張三’, ’李四’]User.objects.filter(name__in=names).update(name=’changed’, update_time=datetime.now()) # 這里必須顯式對update_time賦值 # 方法二names = [’張三’, ’李四’]users = User.objects.filter(name__in=names)for use in users: user.name = ’changed’ user.save() # 這里會自動更新update_time,但是多次save效率低

以上這篇Django bulk_create()、update()與數(shù)據(jù)庫事務(wù)的效率對比分析就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Django
相關(guān)文章:
日本不卡不码高清免费观看,久久国产精品久久w女人spa,黄色aa久久,三上悠亚国产精品一区二区三区
欧美精品中文字幕亚洲专区| 日韩区欧美区| 国产精品videossex久久发布 | 国产欧美精品久久| 国产精品亚洲欧美日韩一区在线 | 欧美网站在线| 三级在线观看一区二区| 日韩专区欧美专区| 日韩美女国产精品| 欧美在线黄色| 欧美精品91| 国产自产自拍视频在线观看| 成人久久一区| 亚洲作爱视频| 日韩va亚洲va欧美va久久| 国产欧美一区二区精品久久久| 午夜宅男久久久| 久久99蜜桃| 日韩免费精品| 久久精品国产99久久| 蜜桃久久av一区| 欧美国产日韩电影| 青青青免费在线视频| 国产精品大片| 欧美影院视频| 国产在线视频欧美一区| 91精品一区国产高清在线gif | 美女国产一区二区三区| 天堂√中文最新版在线| 欧美日韩在线观看视频小说| 中文字幕免费一区二区| 久久超级碰碰| 国精品一区二区| 日韩精品免费一区二区夜夜嗨 | 国产一区二区三区久久| 国产综合精品一区| 日韩成人一级| 另类中文字幕国产精品| 亚洲丝袜美腿一区| jizzjizz中国精品麻豆| 日韩精品一二三区| av在线最新| 久久爱www成人| 亚洲精品自拍| 国产高清一区二区| 一区二区三区四区日本视频| 国产探花一区在线观看| 亚洲欧美日韩国产| 久久91导航| 国产精品一级| 日韩国产欧美在线视频| 成人av动漫在线观看| 麻豆视频在线观看免费网站黄 | 日韩高清一级| 国产精品久久久久av电视剧| 亚洲精品三级| 久久九九精品| 欧美aaaaaa午夜精品| 亚洲一区二区三区四区五区午夜 | 日本午夜精品久久久| 99久久婷婷这里只有精品| 日韩激情中文字幕| 亚洲欧美日韩高清在线| 国产探花在线精品一区二区| 欧美日韩国产免费观看视频| 欧美精品导航| 婷婷视频一区二区三区| 欧美日韩一二三四| 麻豆国产欧美一区二区三区| 亚洲激情五月| 中文字幕人成乱码在线观看| 日本午夜精品久久久久| 国产一区日韩一区| 国产成人精品一区二区免费看京| 日韩区欧美区| 一区二区亚洲精品| 日本不良网站在线观看| 欧美日韩一视频区二区| 美女精品在线| 九色精品91| 久久精品亚洲一区二区| 日韩国产在线观看一区| 亚洲一区二区三区四区五区午夜| 日韩国产欧美| 麻豆免费精品视频| 日韩激情一二三区| 蜜桃av一区二区| 9国产精品视频| 激情婷婷欧美| 99精品综合| 蜜桃成人精品| 成人国产精选| 精品一区二区男人吃奶 | 麻豆一区二区三| 日本不卡一二三区黄网| 在线午夜精品| 午夜国产精品视频免费体验区| 久久精品国产精品亚洲毛片| 日韩在线观看中文字幕| 蜜臀a∨国产成人精品| 在线视频亚洲| 99亚洲视频| 99在线|亚洲一区二区| 欧美日韩国产一区二区三区不卡| 欧美aa在线观看| 日韩免费福利视频| 亚洲永久av| 日韩欧美二区| 日韩三区免费| 久久天堂精品| 亚洲午夜黄色| 日韩在线不卡| 久久久久国产精品一区三寸| 国产夫妻在线| 成人免费电影网址| 欧美jjzz| 精品一区视频| 亚洲二区免费| 欧美日韩国产在线观看网站| 日韩深夜视频| 红杏一区二区三区| 久久久久97| 老司机免费视频一区二区| 美女av一区| 福利一区二区三区视频在线观看| 精品久久视频| 精品一区二区三区中文字幕在线| 精品国产精品国产偷麻豆| 欧美日韩中出| 久久精品超碰| 日韩精品永久网址| 国产精品精品国产一区二区| 九色porny丨国产首页在线| 日本精品不卡| 日韩黄色av| 亚洲人www| 亚洲久久视频| 欧美一区激情| 精品亚洲自拍| 亚洲国产福利| 欧美午夜不卡| 中文字幕av一区二区三区人| 亚洲三级av| 国产精品手机在线播放| 欧美国产小视频| 亚洲大片在线| 亚洲精品美女| 国产精品99久久久久久董美香| 精品国产99| 99精品视频精品精品视频| 亚洲一区二区网站| 国产日韩在线观看视频| 国产精品高颜值在线观看| 日韩精品中文字幕一区二区| 国产一区不卡| 亚洲爱爱视频| 亚洲精品综合| 久久精品超碰| 91免费精品| 国产精品视区| 国产精品sm| 免费av一区二区三区四区| 亚洲久草在线| 成人精品国产亚洲| 亚洲欧美日韩国产综合精品二区 | 成人在线观看免费视频| 五月天综合网站| 日本免费新一区视频| jizzjizz中国精品麻豆| 婷婷亚洲五月色综合| 日本一不卡视频| а√天堂8资源中文在线| 9色精品在线| 麻豆91在线播放| 日韩视频精品在线观看| 欧美久久香蕉| 国产精品99免费看| 国产欧美日韩在线观看视频| 久久亚洲在线| 欧美日本久久| 欧产日产国产精品视频| 天堂va在线高清一区| 亚洲国产成人二区| 亚洲人成毛片在线播放女女| 精品一区不卡| 亚洲性视频在线| 国产成人精品一区二区三区在线| 久久香蕉精品| 亚洲免费福利| 青青青国产精品| 国产韩日影视精品| 卡一精品卡二卡三网站乱码| 伊人影院久久| 久久久免费人体| 亚洲一区二区三区四区电影| 亚洲天堂资源| 免费日韩成人| 亚洲精品极品少妇16p| 欧美国产日韩电影| 在线精品观看|