django上傳資料(2)

2021-07-24 15:00:56 字數 3653 閱讀 4582

三、批量匯入

比如我們要匯入乙個文字,裡面是標題和內容,中間用四個*隔開的,示例(oldblog.txt):

1

2

3

4

5

6

7

8

9

title 1****content 1

title 2****content 2

title 3****content 3

title 4****content 4

在終端匯入有時候有些不方便,我們在 最外面那個 mysite目錄下寫乙個指令碼,叫 txt2db.py,把 oldblog.txt 也放在mysite下

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

#!/usr/bin/env python

#coding:utf-8

importos

os.environ.setdefault("django_settings_module","mysite.settings")

'''

django 版本大於等於1.7的時候,需要加上下面兩句

importdjango

django.setup()

'''

importdjango

ifdjango.version >= (1, 7):#自動判斷版本

django.setup()

def main():

from blog.modelsimportblog

f =open('oldblog.txt')

forlineinf:

title,content = line.split('****')

blog.objects.create(title=title,content=content)

f.close()

if__name__ =="__main__":

main()

print('done!')

好了,我們在終端執行它

1

2

python txt2db.py

# 執行完後顯示 乙個 done! 匯入完成!

執行完畢後會打出乙個 "done!", 資料已經全部匯入!

四、匯入資料重複 解決辦法

如果你匯入資料過多,匯入時出錯了,或者你手動停止了,匯入了一部分,還有一部分沒有匯入。或者你再次執行上面的命令,你會發現資料重複了,怎麼辦呢?

django.db.models 中還有乙個函式叫 get_or_create() 有就獲取過來,沒有就建立,用它可以避免重複,但是速度可以會慢些,因為要先嘗試獲取,看看有沒有

只要把上面的

1

blog.objects.create(title=title,content=content)

換成下面的就不會重複匯入資料了

1

blog.objects.get_or_create(title=title,content=content)

返回值是(blogobject, true/false) 新建時返回 true, 已經存在時返回 false。

更多資料庫api的知識請參見官網文件:queryset api

五、 用fixture匯入

最常見的fixture檔案就是用python manage.py dumpdata 匯出的檔案,示例如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

[

},

}]

你也可以根據自己的models,建立這樣的json檔案,然後用 python manage.py loaddata fixture.json 匯入

詳見:可以寫乙個指令碼,把要匯入的資料轉化成 json 檔案,這樣匯入也會更快些!

django 檔案上傳

檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...

django 檔案上傳

檔案上傳 當django處理上傳乙個檔案的時候,檔案資料被放在request.files中。這個文件解釋檔案怎麼樣被儲存在磁碟上或者記憶體中,怎樣定製預設的行為。基本檔案上傳 考慮乙個包含filefield的簡單的表單 from django import forms class uploadfil...

Django檔案上傳

lang en charset utf 8 titletitle head action home method post enctype multipart form data type file name file type submit value 提交 p form div body htm...