用Django将CSV文件导入MySQL数据库

在开发Web应用程序中,我们经常需要将CSV文件中的数据导入到数据库中,以便进行进一步的处理和分析。在本文中,我们将介绍如何使用Django框架将CSV文件导入到MySQL数据库中。

准备工作

在开始之前,首先确保已经安装了Django和MySQL数据库,并创建了一个Django项目。接下来,我们需要创建一个Django应用程序来处理CSV文件的导入工作。

创建Django应用程序

python manage.py startapp csv_import

配置数据库

settings.py文件中配置MySQL数据库连接信息:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'database_name',
        'USER': 'username',
        'PASSWORD': 'password',
        'HOST': 'localhost',
        'PORT': '3306',
    }
}

导入CSV文件

创建模型

models.py文件中定义一个模型来存储CSV文件中的数据:

from django.db import models

class Data(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()
    email = models.EmailField()

编写视图函数

views.py文件中编写一个视图函数来处理CSV文件的导入操作:

import csv
from django.shortcuts import render
from .models import Data

def import_data(request):
    if request.method == 'POST':
        csv_file = request.FILES['csv_file']
        decoded_file = csv_file.read().decode('utf-8').splitlines()
        reader = csv.DictReader(decoded_file)
        for row in reader:
            data = Data(name=row['name'], age=row['age'], email=row['email'])
            data.save()
        return render(request, 'success.html')
    return render(request, 'import.html')

编写模板文件

templates目录中创建import.htmlsuccess.html文件,用于显示导入CSV文件的页面和导入成功的页面。

import.html:

<form method="post" enctype="multipart/form-data">
    {% csrf_token %}
    <input type="file" name="csv_file">
    <button type="submit">Import</button>
</form>

success.html:

<p>CSV file imported successfully!</p>

实现效果

使用Django提供的自带服务器运行项目,并访问导入页面,选择CSV文件进行导入操作。成功导入后将显示导入成功页面。

gantt
    title 导入CSV文件时间表
    section 导入数据
    导入数据: 导入CSV文件

通过以上步骤,我们成功地使用Django将CSV文件中的数据导入到MySQL数据库中。这样就可以轻松地管理和分析大量的数据,为我们的Web应用程序提供更好的服务。