百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 技术资源 > 正文

教你使用Python玩转MySQL数据库,大数据导入不再是难题!

off999 2024-10-12 06:14 47 浏览 0 评论



数据分析离不开数据库,如何使用python连接MySQL数据库,并进行增删改查操作呢?

我们还会遇到需要将大批量数据导入数据库的情况,又该如何使用Python进行大数据的高效导入呢?

本文会一一讲解,并配合代码和实例。

一、背景

我是在Anaconda notebook中进行连接实验的,环境Python3.6,当然也可以在Python Shell里面进行操作。

最常用也最稳定的用于连接MySQL数据库的python库是PyMySQL。

所以本文讨论的是利用PyMySQL连接MySQL数据库,进行增删改查操作,以及存储大批量数据。

方法参考PyMySQL官方文档和《python数据采集》关于数据存储的部分。

欢迎大家去阅读原文档,相信会理解的更加透彻。


二、基本操作


1、安装PyMySQL库

最简单的方式: 在命令行输入 pip install pymysql

或者: 下载whl文件[1]进行安装,安装过程自行百度。

2、安装MySQL数据库

类MySQL数据库有两种:MySQL和MariaDB,我用的是后者MariaDB。

两者在绝大部分性能上是兼容的,使用起来感觉不到啥区别。

给出下载地址:MySQL[2]MariaDB[3],安装过程很简单,一路Next Step,不过要记好密码。

有个小插曲,MySQL和MariaDB相当于姐姐妹妹的关系,两者由同一个人(Widenius)创建的。MySQL被Oracle收购后,Widenius先生觉得不爽,于是搞了个MariaDB,可以完全替代MySQL。大牛就是任性。

3、SQL基本语法

下面要用SQL的表创建、查询、数据插入等功能,这里简要介绍一下SQL语言的基本语句。

  • 查看数据库:SHOW DATABASES;
  • 创建数据库:CREATE DATEBASE 数据库名称;
  • 使用数据库:USE 数据库名称;
  • 查看数据表:SHOW TABLES;
  • 创建数据表:CREATE TABLE 表名称(列名1 (数据类型1),列名2 (数据类型2));
  • 插入数据:INSERT INTO 表名称(列名1,列名2) VALUES(数据1,数据2);
  • 查看数据:SELECT * FROM 表名称;
  • 更新数据:UPDATE 表名称 SET 列名1=新数据1,列名2=新数据2 WHERE 某列=某数据;

4、连接数据库

安装好必要得文件和库后,接下来正式开始连接数据库吧,虽然神秘却不难哦!

#首先导入PyMySQL库
import pymysql
#连接数据库,创建连接对象connection
#连接对象作用是:连接数据库、发送数据库信息、处理回滚操作(查询中断时,数据库回到最初状态)、创建新的光标对象
connection = pymysql.connect(host = 'localhost' #host属性
                             user = 'root' #用户名 
                             password = '******'  #此处填登录数据库的密码
                             db = 'mysql' #数据库名
                             )

执行这段代码就连接好了!

5、增删改查操作

首先来查看一下有哪些数据库:

#创建光标对象,一个连接可以有很多光标,一个光标跟踪一种数据状态。
#光标对象作用是:、创建、删除、写入、查询等等
cur = connection.cursor()
#查看有哪些数据库,通过cur.fetchall()获取查询所有结果
print(cur.fetchall())

打印出所有数据库:

(('information_schema',),
('law',),
('mysql',),
('performance_schema',),
('test',))

在test数据库里创建表:

#使用数据库test
cur.execute('USE test')
#在test数据库里创建表student,有name列和age列
cur.execute('CREATE TABLE student(name VARCHAR(20),age TINYINT(3))')

向数据表student中插入一条数据:

sql = 'INSERT INTO student (name,age) VALUES (%s,%s)'
cur.execute(sql,('XiaoMing',23))

查看数据表student内容:

cur.execute('SELECT * FROM student')
print(cur.fetchone())

打印输出为:('XiaoMing', 23)

Bingo!是我们刚刚插入的一条数据

最后,要记得关闭光标和连接:

#关闭连接对象,否则会导致连接泄漏,消耗数据库资源
connection.close()
#关闭光标
cur.close()

OK了,整个流程大致如此。

当然这里都是很基础的操作,更多的使用方法需要在PyMySQL官方文档[4]里去寻找。

三、导入大数据文件

以csv文件为例,csv文件导入数据库一般有两种方法:

1、通过SQL的insert方法一条一条导入,适合数据量小的CSV文件,这里不做赘述。

2、通过load data方法导入,速度快,适合大数据文件,也是本文的重点。

样本CSV文件如下:

总体工作分为3步:

1、用python连接mysql数据库;

2、基于CSV文件表格字段创建表;

3、使用load data方法导入CSV文件内容。

sql的load data语法简介:

LOAD DATA LOCAL INFILE 'csv_file_path' INTO TABLE table_name FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES

csv_file_path 指文件绝对路径 table_name指表名称 FIELDS TERMINATED BY ','指以逗号分隔 LINES TERMINATED BY '\\r\\n'指换行 IGNORE 1 LINES指跳过第一行,因为第一行是表的字段名

下面给出全部代码:

#导入pymysql方法
import pymysql


#连接数据库
config = {'host':'',
          'port':3306,
          'user':'username',
          'passwd':'password',
          'charset':'utf8mb4',
          'local_infile':1
          }
conn = pymysql.connect(**config)
cur = conn.cursor()


#load_csv函数,参数分别为csv文件路径,表名称,数据库名称
def load_csv(csv_file_path,table_name,database='evdata'):
    #打开csv文件
    file = open(csv_file_path, 'r',encoding='utf-8')
    #读取csv文件第一行字段名,创建表
    reader = file.readline()
    b = reader.split(',')
    colum = ''
    for a in b:
        colum = colum + a + ' varchar(255),'
    colum = colum[:-1]
    #编写sql,create_sql负责创建表,data_sql负责导入数据
    create_sql = 'create table if not exists ' + table_name + ' ' + '(' + colum + ')' + ' DEFAULT CHARSET=utf8'
    data_sql = "LOAD DATA LOCAL INFILE '%s' INTO TABLE %s FIELDS TERMINATED BY ',' LINES TERMINATED BY '\\r\\n' IGNORE 1 LINES" % (csv_filename,table_name)
 
    #使用数据库
    cur.execute('use %s' % database)
    #设置编码格式
    cur.execute('SET NAMES utf8;')
    cur.execute('SET character_set_connection=utf8;')
    #执行create_sql,创建表
    cur.execute(create_sql)
    #执行data_sql,导入数据
    cur.execute(data_sql)
    conn.commit()
    #关闭连接
    conn.close()
    cur.close()

相关推荐

大文件传不动?WinRAR/7-Zip 入门到高手,这 5 个技巧让你效率翻倍

“这200张照片怎么传给女儿?微信发不了,邮箱附件又超限……”62岁的张阿姨对着电脑犯愁时,儿子只用了3分钟就把照片压缩成一个文件,还教她:“以后用压缩软件,比打包行李还方便!”职场人更懂这...

电脑解压缩软件推荐——7-Zip:免费、高效、简洁的文件管理神器

在日常工作中,我们经常需要处理压缩文件。无论是下载软件包、接收文件,还是存储大量数据,压缩和解压缩文件都成为了我们日常操作的一部分。而说到压缩解压软件,7-Zip绝对是一个不可忽视的名字。今天,我就来...

设置了加密密码zip文件要如何打开?这几个方法可以试试~

Zip是一种常见的压缩格式文件,文件还可以设置密码保护。那设置了密码的Zip文件要如何打开呢?不清楚的小伙伴一起来看看吧。当我们知道密码想要打开带密码的Zip文件,我们需要用到适用于Zip格式的解压缩...

大文件想要传输成功,怎么把ZIP文件分卷压缩

不知道各位小伙伴有没有这样的烦恼,发送很大很大的压缩包会受到限制,为此,想要在压缩过程中将文件拆分为几个压缩包并且同时为所有压缩包设置加密应该如何设置?方法一:使用7-Zip免费且强大的文件管理工具7...

高效处理 RAR 分卷压缩包:合并解压操作全攻略

在文件传输和存储过程中,当遇到大文件时,我们常常会使用分卷压缩的方式将其拆分成多个较小的压缩包,方便存储和传输。RAR作为一种常见的压缩格式,分卷压缩包的使用频率也很高。但很多人在拿到RAR分卷...

2个方法教你如何删除ZIP压缩包密码

zip压缩包设置了加密密码,每次解压文件都需要输入密码才能够顺利解压出文件,当压缩包文件不再需要加密的时候,大家肯定想删除压缩包密码,或是忘记了压缩包密码,想要通过删除操作将压缩包密码删除,就能够顺利...

速转!漏洞预警丨压缩软件Winrar目录穿越漏洞

WinRAR是一款功能强大的压缩包管理器,它是档案工具RAR在Windows环境下的图形界面。该软件可用于备份数据,缩减电子邮件附件的大小,解压缩从Internet上下载的RAR、ZIP及其它类...

文件解压方法和工具分享_文件解压工具下载

压缩文件减少文件大小,降低文件失效的概率,总得来说好处很多。所以很多文件我们下载下来都是压缩软件,很多小伙伴不知道怎么解压,或者不知道什么工具更好,所以今天做了文件解压方法和工具的分享给大家。一、解压...

[python]《Python编程快速上手:让繁琐工作自动化》学习笔记3

1.组织文件笔记(第9章)(代码下载)1.1文件与文件路径通过importshutil调用shutil模块操作目录,shutil模块能够在Python程序中实现文件复制、移动、改名和删除;同时...

Python内置tarfile模块:读写 tar 归档文件详解

一、学习目标1.1学习目标掌握Python内置模块tarfile的核心功能,包括:理解tar归档文件的原理与常见压缩格式(gzip/bz2/lzma)掌握tar文件的读写操作(创建、解压、查看、过滤...

使用python展开tar包_python拓展

类Unix的系统,打包文件经常使用的就是tar包,结合zip工具,可以方便的打包并解压。在python的标准库里面有tarfile库,可以方便实现生成了展开tar包。使用这个库最大的好处,可能就在于不...

银狐钓鱼再升级:白文件脚本化实现GO语言后门持久驻留

近期,火绒威胁情报中心监测到一批相对更为活跃的“银狐”系列变种木马。火绒安全工程师第一时间获取样本并进行分析。分析发现,该样本通过阿里云存储桶下发恶意文件,采用AppDomainManager进行白利...

ZIP文件怎么打开?2个简单方法教你轻松搞定!

在日常工作和生活中,我们经常会遇到各种压缩文件,其中最常见的格式之一就是ZIP。ZIP文件通过压缩数据来减少文件大小,方便我们进行存储和传输。然而,对于初学者来说,如何打开ZIP文件可能会成为一个小小...

Ubuntu—解压多个zip压缩文件.zip .z01 .z02

方法将所有zip文件放在同一目录中:zip_file.z01,zip_file.z02,zip_file.z03,...,zip_file.zip。在Zip3.0版本及以上,使用下列命令:将所有zi...

如何使用7-Zip对文件进行加密压缩

7-Zip是一款开源的文件归档工具,支持多种压缩格式,并提供了对压缩文件进行加密的功能。使用7-Zip可以轻松创建和解压.7z、.zip等格式的压缩文件,并且可以通过设置密码来保护压缩包中的...

取消回复欢迎 发表评论: