Django上传CSV文件到数据库

Django上传CSV文件到数据库

Django上传CSV文件到数据库

在开发Web应用程序时,有时候我们需要向数据库中批量导入数据,而CSV文件是一种常见的数据格式。在Django中,我们可以通过上传CSV文件的方式来将数据批量导入到数据库中。本文将介绍如何使用Django实现上传CSV文件并将数据存储到数据库中的方法。

创建Django项目

首先,我们需要创建一个Django项目。如果你已经有一个Django项目,可以直接跳过这一步。

  1. 创建一个Django项目
django-admin startproject myproject
  1. 进入项目目录
cd myproject

创建Django应用

接下来,我们需要创建一个Django应用来处理上传CSV文件的逻辑。

  1. 创建一个Django应用
python manage.py startapp myapp
  1. settings.py中注册应用
INSTALLED_APPS = [
    ...
    'myapp',
]

创建模型

models.py文件中定义要存储CSV文件中数据的模型。

from django.db import models

class MyModel(models.Model):
    name = models.CharField(max_length=100)
    age = models.IntegerField()

然后运行迁移,创建数据库表。

python manage.py makemigrations
python manage.py migrate

创建表单

forms.py文件中定义一个表单,用来接收用户上传的CSV文件。

from django import forms

class UploadFileForm(forms.Form):
    file = forms.FileField()

创建视图

views.py文件中,我们编写视图函数来处理文件上传并将数据存储到数据库中。

from django.shortcuts import render
from .forms import UploadFileForm
import csv
from .models import MyModel

def upload_csv(request):
    if request.method == 'POST':
        form = UploadFileForm(request.POST, request.FILES)
        if form.is_valid():
            file = form.cleaned_data['file']
            decoded_file = file.read().decode('utf-8').splitlines()
            reader = csv.DictReader(decoded_file)
            for row in reader:
                MyModel.objects.create(
                    name=row['name'],
                    age=row['age']
                )
            return render(request, 'success.html')
    else:
        form = UploadFileForm()
    return render(request, 'upload.html', {'form': form})

创建模板

templates文件夹中创建两个HTML文件,一个用来显示上传表单,一个用来显示上传成功的提示信息。

upload.html

<!DOCTYPE html>
<html>
<head>
    <title>Upload CSV File</title>
</head>
<body>
    <h1>Upload CSV File</h1>
    <form method="post" enctype="multipart/form-data">
        {% csrf_token %}
        {{ form }}
        <button type="submit">Upload</button>
    </form>
</body>
</html>

success.html

<!DOCTYPE html>
<html>
<head>
    <title>Upload Success</title>
</head>
<body>
    <h1>Upload Success</h1>
    <p>The CSV file has been uploaded and data has been stored in the database.</p>
</body>
</html>

配置URL

urls.py文件中配置URL映射。

from django.contrib import admin
from django.urls import path
from myapp.views import upload_csv

urlpatterns = [
    path('admin/', admin.site.urls),
    path('upload/', upload_csv, name='upload_csv'),
]

运行项目

现在我们可以运行Django项目,并访问/upload页面上传CSV文件。

python manage.py runserver

上传CSV文件后,数据将被存储到数据库中。

通过上述步骤,我们成功地实现了使用Django上传CSV文件并将数据存储到数据库中的功能。这种方法不仅方便,而且能够快速导入大量数据,提高了开发效率。

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程