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

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日

相关文章

  • Python中的pandas.merge_asof()函数

    pandas.merge_asof()函数是pandas库中的一个非常实用的函数,用于根据时间戳将两个数据集进行合并。该函数可以很好地处理时间戳不完全匹配的情况,并进行模糊匹配。下面是使用pandas.merge_asof()函数的详细攻略: 函数概述 pandas.merge_asof(left, right, on=None, left_on=None,…

    python-answer 2023年3月27日
    00
  • 浅谈Pandas 排序之后索引的问题

    下面我将详细讲解“浅谈Pandas排序之后索引的问题”。 1. 背景说明 在使用Pandas进行数据分析时,我们经常需要对数据进行排序,按照指定的列或多个列进行排序是非常方便的。但是,排序之后的索引可能会出现问题,比如索引并不是按照原来的顺序排列,或是索引被重置了。这时候,我们就需要对排序后的索引进行调整,以使得索引仍然能够对应正确的数据。 2. 排序之后的…

    python 2023年5月14日
    00
  • pandas 层次化索引的实现方法

    下面是关于“pandas层次化索引的实现方法”的完整攻略,包含以下内容: 一、什么是层次化索引 层次化索引(hierarchical indexing,也称为多级索引)是 pandas 中一项重要的功能。它使得我们可以在一个轴上拥有多个(两个以上)的索引级别。 以 DataFrame 为例,可以通过设置多个行或者列索引级别来获得层次化索引。这种方式下,每个轴…

    python 2023年5月14日
    00
  • 关于Pandas count()与values_count()的用法及区别

    关于Pandas count()与value_counts()的用法及区别 1. count()方法 count()方法用于计算DataFrame或Series中非缺失值的数量。其语法格式为: DataFrame.count(axis=0, level=None, numeric_only=False) Series.count() 其中,参数说明如下: a…

    python 2023年5月14日
    00
  • 如何用pandas处理hdf5文件

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

    python 2023年5月14日
    00
  • 如何在Pandas数据框架中预处理字符串数据

    在Pandas数据框架中预处理字符串数据,我们可以使用Python内置的字符串方法或Pandas字符串方法来处理。下面是一些可用的方法: strip()方法:用于删除字符串的前导和尾随空格。可以使用df[‘column’].str.strip()应用于一个名称为‘column’的列。 lower()方法:用于将字符串转换为小写。可以使用df[‘column’…

    python-answer 2023年3月27日
    00
  • Mysql中错误使用SQL语句Groupby被兼容的情况

    MySQL中,Group By语句是用来对查询结果进行分组的,通常与聚合函数配合使用,比如SUM、AVG、COUNT等。不过,如果在Group By语句中错误使用不兼容的SQL语句,就会导致查询结果不准确,这可能会影响业务逻辑和数据分析等方面。下面将详细讲解Mysql中错误使用SQL语句Groupby被兼容的情况的完整攻略和相关示例说明。 1. 不兼容SQL…

    python 2023年5月14日
    00
  • 在Python中找出是某个数字的倍数的位置

    在Python中找出某个数字的倍数的位置可以通过以下步骤实现: 创建一个空数组或列表,用于存储找到的位置 遍历原始数组或列表,判断每个数是否为目标数字的倍数 如果是目标数字的倍数,将该数的位置添加到第1步中创建的数组或列表中 返回第1步中创建的数组或列表,其中存储的是目标数字的倍数位置 下面是一个使用 Python 代码示例的完整攻略: # 定义原始数组 n…

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