您的位置:首页 > 数据库 > SQL

Django向Mysql中批量导入数据

2017-01-10 14:32 344 查看
之前的例子,我们在交互命令行里面单行的插入数据。怎么批量导入数据呢?

我首先尝试了用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!成功插入数据库:



问题解决~
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  django 数据库