Python 读取千万级数据自动写入 MySQL 数据库

yizhihongxing

Python 读取千万级数据自动写入 MySQL 数据库

本文将讲解如何使用 Python 读取千万级数据,并将读取的数据自动写入 MySQL 数据库的过程。

确认准备工作

在开始执行代码之前,需要先完成以下准备工作:

  1. 安装 MySQL 和 Python 的 MySQL 连接库 pymysql,可以直接使用 pip 安装:

pip install pymysql

  1. 准备好要读取的数据文件,以 .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_usernameyour_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技术站

(0)
上一篇 2023年6月13日
下一篇 2023年6月13日

相关文章

  • 如何用pandas处理hdf5文件

    下面是详细讲解如何用pandas处理hdf5文件的完整攻略: 什么是HDF5文件 HDF5文件是一种具有高度可扩展性和可移植性的数据格式,通常用于存储和管理大量结构化数据。HDF5文件包含一个层次结构,其中可以存储多个数据集,并且数据集可以具有任意数量的轴。 如何使用pandas处理HDF5文件 Pandas提供了许多函数,可用于读取和写入HDF5文件。下面…

    python 2023年5月14日
    00
  • 在Python 2.7即将停止支持时,我们为你带来了一份python 3.x迁移指南

    Python2.7停止支持与迁移指南 1. 为什么需要迁移? Python2.7将于2020年1月1日停止支持,维护期也于今年正式结束,这意味着Python 2.7已经不再更新,而且也很可能存在着一些无法修复的安全漏洞和性能问题。因此,迁移到Python 3.x版本是不可避免的。 2. Python2.7到Python3.x的主要变化 print语句变成了p…

    python 2023年5月14日
    00
  • 如何在Pandas中使用 “NOT IN “过滤器

    在Pandas中使用 “NOT IN” 过滤器可以通过两种方式实现,即使用 ~ 符号和使用isin() 函数。下面我会详细介绍这两种方式的语法和示例。 使用 ~ 符号: 在Pandas中,如果你想使用 “NOT IN” 过滤器,可以使用 ~ 符号来实现。具体语法如下: df[~df[‘column_name’].isin([‘value_1’, ‘value…

    python-answer 2023年3月27日
    00
  • python 文件读写和数据清洗

    Python 文件读写和数据清洗是数据分析和机器学习过程中重要的一环。数据清洗过程中需要从外部文件读取数据,进行数据处理和转换,再输出到另一个文件中。在 Python 中,有多种方式可以进行文件读写和数据清洗的操作。 文件读写 打开文件 使用 Python 的内置函数 open 可以打开一个文本文件进行读写操作。open 接收两个参数:文件名和模式。模式可以…

    python 2023年5月14日
    00
  • pandas 数据结构之Series的使用方法

    我来详细讲解一下“pandas数据结构之Series的使用方法”的完整攻略。 1. Series简介 Series是pandas库中一种基本的数据结构,它类似于一维的数组或者列表,并且带有标签(label),这样就可以根据标签名快速定位数据。Series通常用来存储一列数据,其由两个主要部分组成:索引(index)和数据(data)。索引是Series对象中…

    python 2023年5月14日
    00
  • Pandas中Series和DataFrame的索引实现

    下面开始讲解Pandas中Series和DataFrame的索引实现的攻略。 1. 索引简介 在Pandas中,数据结构主要有两种,分别是Series和DataFrame。Series是一维的数组,DataFrame是二维的表格型数据结构。对于这两个数据类型,索引都扮演着非常重要的角色。索引可以帮助我们快速地定位数据,提高数据操作的效率。 在Pandas中,…

    python 2023年5月14日
    00
  • 在Pandas中使用散点矩阵绘制配对图

    散点矩阵(Scatter Matrix)是基于 Pandas 的一个绘图函数。它们绘制一组变量的散点图矩阵。散点图矩阵对于观察多个相互关联的变量之间的关系非常有用。在 Pandas 中,我们可以使用 scatter_matrix 函数实现散点矩阵的绘制。 下面我们就来讲一下如何在 Pandas 中使用 scatter_matrix 绘制配对图,并提供一个例子…

    python-answer 2023年3月27日
    00
  • 从Pandas数据框架中删除列中有缺失值或NaN的行

    在Pandas中,我们可以使用dropna()方法来从数据框架中删除具有缺失值或NaN值的行或列。 为了删除列中有缺失值或NaN的行,我们需要在dropna()方法中指定轴向参数axis=0。此外,我们还需要指定subset参数以确定要处理的列。 以下是完整的过程及示例代码: 导入Pandas库并读入数据: import pandas as pd df = …

    python-answer 2023年3月27日
    00
合作推广
合作推广
分享本页
返回顶部