Django向Mysql中批量导入数据

本文介绍了如何在Django项目中批量导入CSV数据到MySQL数据库。由于直接使用第三方工具如Navicat导入不适用,因此通过在Django工程内编写脚本实现。详细步骤包括在项目根目录创建文件,处理已有数据库和数据表,并运行Python脚本来完成数据导入。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

之前的例子,我们在交互命令行里面单行的插入数据。怎么批量导入数据呢?

我首先尝试了用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'
              ┏┓      ┏┓
            ┏┛┻━━━┛┻┓
            ┃      ☃      ┃
     
### 将数据导入Django项目的MySQL数据库 #### 使用`manage.py loaddata`命令加载JSON或XML文件中的固定数据集 为了将预先准备好的数据(如测试数据)快速载入Django应用连接的MySQL数据库,可以创建一个包含序列化对象的JSON或XML文件,并通过`loaddata`管理命令来执行此操作。 ```bash python manage.py loaddata fixture_name.json ``` 该方法适用于批量插入已知的数据条目[^1]。 #### 利用ORM进行程序化的数据插入 对于动态生成或是从其他地方获取的数据,则可以通过Python脚本配合Django ORM完成向MySQL数据库写入记录的任务。下面是一个简单的例子: 假设有一个名为`User`的应用及其对应的模型类也叫`User`,那么可以在交互式解释器里或者编写独立的Python脚本来实现这一点: ```python from myapp.models import User new_user = User(username="example", password="securepassword") # 创建新实例并赋初值 new_user.save() # 调用save方法保存至数据库 ``` 这段代码展示了如何手动构建一个新的用户实体并通过调用其`.save()`成员函数将其持久化到关联的表格内[^4]。 #### 自动同步结构变更——Makemigrations与Migrate 当定义好了新的数据表模式之后,应当先运行`makemigrations`指令让框架检测出这些变化并为之生成相应的迁移文件;接着再运用`migrate`使更改生效于实际使用的RDBMS之上。 ```bash python manage.py makemigrations python manage.py migrate ``` 这一步骤确保了应用程序逻辑层面上的设计能够正确映射到底层的关系型存储引擎中去。 #### 配置媒体文件处理机制以便支持多媒体内容上载 如果涉及到图片或其他类型的二进制大对象(BLOB),则需额外配置好静态资源托管位置(`STATIC_URL`)以及上传资料根目录(`MEDIA_ROOT`)两项参数,在settings.py文件内部指明具体的磁盘路径和URL前缀即可满足需求[^3]。 最后值得注意的是,尽管可以直接借助第三方库比如PyMySQL来进行底层SQL语句的操作,但这通常不是推荐的做法,因为这样做会绕过许多由Django所提供的安全性和便捷特性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值