django上传数据(3)

六、Model.objects.bulk_create() 更快更方便

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
#!/usr/bin/env python
import  os
os.environ.setdefault( "DJANGO_SETTINGS_MODULE" "mysite.settings" )
 
def main():
     from blog.models  import  Blog
     f =  open ( 'oldblog.txt' )
     BlogList = []
     for  line  in  f:
         title,content = line. split ( '****' )
         blog = Blog(title=title,content=content)
         BlogList.append(blog)
     f.close()
     
     Blog.objects.bulk_create(BlogList)
 
if  __name__ ==  "__main__" :
     main()
     print( 'Done!' )

由于Blog.objects.create()每保存一条就执行一次SQL,而bulk_create()是执行一条SQL存入多条数据,做会快很多!当然用列表解析代替 for 循环会更快!!

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
#!/usr/bin/env python
import  os
os.environ.setdefault( "DJANGO_SETTINGS_MODULE" "mysite.settings" )
 
def main():
     from blog.models  import  Blog
     f =  open ( 'oldblog.txt' )
     
     BlogList = []
     for  line  in  f:
         parts = line. split ( '****' )
         BlogList.append(Blog(title=parts[0], content=parts[1]))
     
     f.close()
         
     # 以上四行 也可以用 列表解析 写成下面这样
     # BlogList = [Blog(title=line.split('****')[0], content=line.split('****')[1]) for line in f]
     
     Blog.objects.bulk_create(BlogList)
 
if  __name__ ==  "__main__" :
     main()
     print( 'Done!' )

你可能感兴趣的:(django上传数据(3))