Python插入100万条数据到MySQL数据库

步骤一:导入所需模块和库

首先,我们需要导入 MySQL 连接器模块和 Faker 模块。MySQL 连接器模块用于连接到 MySQL 数据库,而 Faker 模块用于生成虚假数据。

import mysql.connector  # 导入 MySQL 连接器模块
from faker import Faker # 导入 Faker 模块,用于生成虚假数据

步骤二:创建 Faker 实例

然后,我们创建一个 Faker 实例,以便使用其功能生成虚假数据。

faker = Faker() # 创建 Faker 实例

步骤三:连接到 MySQL 数据库

接下来,我们使用 MySQL 连接器模块连接到 MySQL 数据库。需要提供主机地址、用户名、密码和数据库名称。

conn = mysql.connector.connect(
host='localhost', # 数据库主机地址
user='root', # 数据库用户名
password='123456', # 数据库密码
database='test2' # 数据库名称
)

步骤四:创建游标对象

然后,我们创建一个游标对象,用于执行 SQL 语句。

cursor = conn.cursor()  # 创建游标对象,用于执行 SQL 语句

步骤五:插入虚假数据

现在,我们准备开始插入虚假数据到数据库中。我们使用循环生成多条数据,并将其插入到数据库表中。

for _ in range(1000000):  # 循环100万次,插入100万条数据
# 使用 Faker 实例生成虚假数据
name = faker.name() # 姓名
address = faker.address() # 地址
email = faker.email() # 电子邮件
phone_number = faker.phone_number() # 电话号码
job_title = faker.job() # 职位
company = faker.company() # 公司
date_of_birth = faker.date_of_birth() # 出生日期
credit_card_number = faker.credit_card_number() # 信用卡号 # 定义 SQL 插入语句
sql = "INSERT INTO fake_data (name, address, email, phone_number, job_title, company, date_of_birth, credit_card_number) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)" # 设置参数值
val = (name, address, email, phone_number, job_title, company, date_of_birth, credit_card_number) # 执行 SQL 插入语句
cursor.execute(sql, val)

步骤六:提交事务和关闭连接

最后,我们提交事务以保存更改,并关闭游标和数据库连接。

conn.commit()   # 提交事务,保存更改
cursor.close() # 关闭游标
conn.close() # 关闭数据库连接

使用 Python 将 MySQL 数据库中的数据逐步查询并写入多个 Excel 文件

步骤一:导入所需模块和库

首先,我们需要导入 os 模块用于文件和目录操作,pandas 库用于数据处理,以及 mysql.connector 模块用于连接 MySQL 数据库。

import os  # 导入 os 模块,用于文件和目录操作
import pandas as pd # 导入 pandas 库并使用 pd 别名,用于数据处理
import mysql.connector # 导入 mysql.connector 模块,用于连接 MySQL 数据库

步骤二:连接到 MySQL 数据库

conn = mysql.connector.connect(
host='localhost', # 数据库主机地址
user='root', # 数据库用户名
password='123456', # 数据库密码
database='test2' # 数据库名称
)

步骤三:设置每个 Excel 文件的行数限制和输出文件夹

chunk_size = 50000  # 每个 Excel 文件的行数限制
output_folder = "output_data" # 输出文件夹名称
if not os.path.exists(output_folder): # 如果文件夹不存在,则创建
os.makedirs(output_folder)

步骤四:逐步查询数据库并写入 Excel 文件

offset = 0  # 查询偏移量初始值为0
while True: # 使用循环查询数据库,直到数据查询完毕
query = f"SELECT * FROM fake_data LIMIT {offset}, {chunk_size}" # 构造 SQL 查询语句
df = pd.read_sql(query, conn) # 使用 pandas 读取 SQL 查询结果为 DataFrame
if df.empty: # 如果查询结果为空,则退出循环
break
output_file = os.path.join(output_folder, f"output_{offset // chunk_size + 1}.xlsx") # 构造输出文件路径
df.to_excel(output_file, index=False) # 将 DataFrame 写入 Excel 文件,不写入索引列
offset += chunk_size # 更新查询偏移量,准备下一次查询

步骤五:关闭数据库连接

conn.close()  # 关闭数据库连接

最后,我们关闭数据库连接,释放资源。

 

使用Python插入100万条数据到MySQL数据库并将数据逐步写出到多个Excel的更多相关文章

  1. 教你如何6秒钟往MySQL插入100万条数据!然后删库跑路!

    教你如何6秒钟往MySQL插入100万条数据!然后删库跑路! 由于我用的mysql 8版本,所以增加了Timezone,然后就可以了 前提是要自己建好库和表. 数据库test, 表user, 三个字段 ...

  2. PHP实现插入100万条数据优化

    第一种方法一条一条执行插入,结果会很慢 <?php header("Content-Type:text/html;charset=utf-8"); date_default_ ...

  3. Oracle中插入100万条数据

    在做项目的工程中,需要数据库中存在大量的数据进行程序的验证,但是我们又没有数据,这时就需要我们自己手动建一个表,插入大量数据,进行验证. 那么插入大量数据的sql语句如下: insert into E ...

  4. Mysql如何快速插入100万条记录?

    1.java程序拼接insert带多个value,使一次提交多个值. 2.插入数据之前先删除索引(注意主键不能删除),然后插入数据,最后重建索引 3.可以设置手动commit,用来提高效率 4.使用批 ...

  5. 绝对干货,教你4分钟插入1000万条数据到mysql数据库表,快快进来

    我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入1000万条数据的时候遇到了一些问题,现在先来解决他们,一开始我插入100万条数据时候报错,控制台的信息如下: ...

  6. Qt中提高sqlite的读写速度(使用事务一次性写入100万条数据)

    SQLite数据库本质上来讲就是一个磁盘上的文件,所以一切的数据库操作其实都会转化为对文件的操作,而频繁的文件操作将会是一个很好时的过程,会极大地影响数据库存取的速度.例如:向数据库中插入100万条数 ...

  7. 插入1000万条数据到mysql数据库表

    转自:https://www.cnblogs.com/fanwencong/p/5765136.html 我用到的数据库为,mysql数据库5.7版本的 1.首先自己准备好数据库表 其实我在插入100 ...

  8. 极限挑战—C#+ODP 100万条数据导入Oracle数据库仅用不到1秒

    链接地址:http://www.cnblogs.com/armyfai/p/4646213.html 要:在这里我们将看到的是C#中利用ODP实现在Oracle数据库中瞬间导入百万级数据,这对快速批量 ...

  9. 极限挑战—C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码)

    原文:极限挑战-C#100万条数据导入SQL SERVER数据库仅用4秒 (附源码) 实际工作中有时候需要把大量数据导入数据库,然后用于各种程序计算,本实验将使用5中方法完成这个过程,并详细记录各种方 ...

  10. 使用hibernate在5秒内插入11万条数据,你觉得可能吗?

    需求是这样的,需要查询某几个表的数据,然后插入到另外一个表. 一看到需求,很多人都会用hibernate去把这些数据都查询出来,然后放到list中, 然后再用for循环之类的进行遍历,一条一条的取出数 ...

随机推荐

  1. pinject依赖注入模块

    pinject 是一个基于 Python 的轻量级依赖注入库,可以方便地实现依赖注入的功能. 下面我们将通过一个简单的示例来演示如何使用 pinject 实现依赖注入. 首先,我们需要安装 pinje ...

  2. django学习第九天---raw查询原生sql和python脚本中调用django环境和ORM锁和事务

    ORM执行原生sql语句 在模型查询api不够用的情况下,我们还可以使用原始的sql语句进行查询 方式1 raw() raw()方法,返回模型的实例django.db.models.query.Raw ...

  3. Elasticsearch系列之-查询

    Elasticsearch之-查询 查询分类: 基本查询:使用es内置查询条件进行查询 组合查询:把多个查询组合在一起进行复合查询 过滤:查询的同时,通过filter条件在不影响打分的情况下筛选数据 ...

  4. 解决xshell连不上ubuntu虚拟机

    分析 原因:虚拟机未安装ssh服务(Xshell远程连接需通过ssh协议) 解决方法 ubuntu安装ssh服务器 sudo apt-get install openssh-server 后续有问题可 ...

  5. 问题:RuntimeError: Model class LuffyAPI.apps.user.models.UserInfo doesn't declare an explicit app_label and isn't in an application in INSTALLED_APPS.

    问题截图 报错原因 提示app未注册,但实际上已经注册的 1. # settings配置文件移动后要将这个settings添加到环境变量中 sys.path.insert(0, BASE_DIR) # ...

  6. 04、Etcd中常见的概念

    本篇内容主要来源于自己学习的视频,如有侵权,请联系删除,谢谢. 上一章节,我们学习了 Etcdctl 的使用,从中窥探了 Etcd 的强大之处.从这一节开始,后面的内容基本上都是偏理论的东西,争取在看 ...

  7. 【Azure 应用服务】在Azure Funciton中使用Powershell脚本函数,需要存储一些变量值如何解决?

    问题描述 使用Azure Function创建Powershell脚本来执行函数,在使用中需要存储一些不重要的参数.一般情况,存储的问题都是交给DB,Storage等来解决.但是有没有一种简单的办法呢 ...

  8. C++的智能指针

    #pragma once /*Smart pointer 智能指针;灵巧指针 智能指针三大件//1.RAII//2.像指针一样使用//3.拷贝问题 ,指针指针需要的是浅拷贝,并且需要处理资源释放问题 ...

  9. C++ 多线程笔记1 线程的创建

    C++ 多线程笔记1 线程的创建 里面代码会用到的头文件 #include <iostream> #include <string> #include <memory&g ...

  10. Educational Codeforces Round 145 (Rated for Div. 2)C. Sum on Subarrays(构造)

    很意思的一道构造题 题意:给一个\(n.k\),让构造长度为n的数组满足,子数组为整数的个数为k个,负数的为\(k-(n+1)* n/2\),每个数的范围为\([-1000,1000]\) 这种构造题 ...