使用Python插入100万条数据到MySQL数据库并将数据逐步写出到多个Excel
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() # 关闭数据库连接
最后,我们关闭数据库连接,释放资源。