Python 读取千万级数据自动写入 MySQL 数据库
本文将讲解如何使用 Python 读取千万级数据,并将读取的数据自动写入 MySQL 数据库的过程。
确认准备工作
在开始执行代码之前,需要先完成以下准备工作:
- 安装 MySQL 和 Python 的 MySQL 连接库
pymysql
,可以直接使用 pip 安装:
pip install pymysql
- 准备好要读取的数据文件,以
.csv
格式为例,放在本地某个路径下。
读取数据
程序的第一步是要读取数据文件。我们可以使用 Python 标准库中的 csv
模块来读取 .csv
格式的数据文件。
示例代码如下:
import csv
with open('/path/to/data.csv', 'r') as f:
reader = csv.reader(f)
for line in reader:
print(line)
上述代码中,我们打开了一个 .csv
文件,并使用 csv
模块的 reader
函数创建了一个 reader
对象。然后我们遍历了 reader
对象,对于每一行数据,我们使用 print
函数输出了其内容。
连接 MySQL 数据库
接下来,我们需要使用 Python 来连接 MySQL 数据库。我们可以使用 pymysql
模块来完成这个任务。
首先,在 MySQL 中创建一个数据库和一张表。可以使用如下的 SQL 语句:
CREATE DATABASE IF NOT EXISTS test_db;
USE test_db;
CREATE TABLE IF NOT EXISTS test_table (
id int(11) NOT NULL,
col1 varchar(255) NOT NULL,
col2 varchar(255) NOT NULL,
col3 varchar(255) NOT NULL,
PRIMARY KEY (id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
然后,我们可以使用如下的 Python 代码连接到 MySQL,并创建一个 cursor
对象,用来执行 SQL 语句:
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
port=3306,
user='your_username',
password='your_password',
db='test_db',
charset='utf8mb4')
# 创建 cursor 对象
cursor = conn.cursor()
请将代码中的 your_username
和 your_password
替换为你自己的 MySQL 用户名和密码。
插入数据
接下来,我们需要将从数据文件中读取的数据插入到 MySQL 数据库中。可以使用如下的 Python 代码来实现:
import csv
import pymysql
# 连接数据库
conn = pymysql.connect(
host='localhost',
port=3306,
user='your_username',
password='your_password',
db='test_db',
charset='utf8mb4')
# 创建 cursor 对象
cursor = conn.cursor()
# 读取数据并插入数据库
with open('/path/to/data.csv', 'r') as f:
reader = csv.reader(f)
for line in reader:
sql = "INSERT INTO test_table (id, col1, col2, col3) VALUES (%s, %s, %s, %s)"
cursor.execute(sql, (line[0], line[1], line[2], line[3]))
# 提交事务
conn.commit()
# 关闭 cursor 对象和数据库连接
cursor.close()
conn.close()
上述代码中,我们首先连接到了 MySQL 数据库,并创建了一个 cursor
对象。然后我们读取了数据文件,并遍历了 reader
对象,从而将每一行数据插入到 MySQL 数据库中。
需要注意的是,我们在 SQL 语句中使用了占位符 %s
,同时将插入数据对应的参数作为元组传递给 cursor.execute
函数。这样可以避免 SQL 注入等安全问题。
结论
本文介绍了如何使用 Python 读取千万级数据,并将读取的数据自动写入到 MySQL 数据库的过程。需要注意的是,如果文件过大,可能需要使用分块读取的方式来避免内存溢出等问题。
同时,在实际使用中,还需要考虑到数据类型、保证数据的完整性和安全性等方面的问题。本文仅介绍了一个简单的实现过程,具体实现还需根据实际情况调整。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Python 读取千万级数据自动写入 MySQL 数据库 - Python技术站