1. 程式人生 > >Django向Mysql中批量匯入資料

Django向Mysql中批量匯入資料

之前的例子,我們在互動命令列裡面單行的插入資料。怎麼批量匯入資料呢?

我首先嚐試了用navicat這個工具向資料庫中匯入,但是發現不行,不知道明確的原因,我猜是因為Django中的資料庫有自己的形式,所以不能用第三方直接插入。

那麼就得在我們的工程裡面用指令碼實現:

簡單記錄一下我自己的新增過程:
在最外層my_project資料夾中新增我們要批量匯入的檔案:

//demo4student.csv

liuliu
yanyan
jingjing

我們已經創立的資料庫裡面只有一個欄位:name
資料庫已經存在,而且其中的資料表我們經在model.py中產生,接下來就是要將上面的csv檔案匯入到已有的資料表myStudent中

在工程檔案的最外層建立一個csv2db.py檔案:

#csv2db.py
#!/usr/bin/env python
# -*- coding: utf-8 -*-
"""
__title__ = ''
__author__ = 'snow'
__mtime__ = '2017/1/10'
              ┏┓      ┏┓
            ┏┛┻━━━┛┻┓
            ┃      ☃      ┃
            ┃  ┳┛  ┗┳  ┃
            ┃      ┻      ┃
            ┗━┓      ┏━┛
                ┃      ┗━━━┓
                ┃  你好棒啊    ┣┓
                ┃ 喵喵喵~~   ┏┛
                ┗┓┓┏━┳┓┏┛
                  ┃┫┫  ┃┫┫
                  ┗┻┛  ┗┻┛
"""
import os os.environ.setdefault("DJANGO_SETTINGS_MODULE", "my_project.settings") ''' Django 版本大於等於1.7的時候,需要加上下面兩句 import django django.setup() 否則會丟擲錯誤 django.core.exceptions.AppRegistryNotReady: Models aren't loaded yet. ''' import django if django.VERSION >= (1, 7): # 自動判斷版本 django.setup() def
main():
from app1.models import myStudent f = open('demo4student.csv') for line in f: # 根據你的檔案格式處理插入的形式 # title, content = line.split('****') # Blog.objects.create(title=title, content=content) tmp = line.strip() myStudent.objects.create(name=tmp) f.close() if __name__ == "__main__": main() print('Done!')

在terminal中cd到我們工程資料夾下,執行命令:

python csv2db.py

執行結束後出現:Done!成功插入資料庫:
這裡寫圖片描述

問題解決~