Django向Mysql中批量匯入資料
阿新 • • 發佈:2019-01-26
之前的例子,我們在互動命令列裡面單行的插入資料。怎麼批量匯入資料呢?
我首先嚐試了用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!成功插入資料庫:
問題解決~