专栏首页数据小魔方MySQL基础入门——MySQL与R语言、Python交互

MySQL基础入门——MySQL与R语言、Python交互

MySQL作为z最为流行的关系型数据库管理平台之一,与绝大多数数据分析工具或者编程语言都有接口,今天这一篇分享如何将MySQL与R语言、Python进行连接。

R语言中与SQL管理平台通讯的接口包有很多,可以根据自己使用的数据库平台类型以及习惯,挑选合适的接口包。因为我个人笔记本使用的MySQL平台,所以本篇仅以MySQL为例分享。(如果你需要其他平台的接口导入方案,可以直接在csdn博客上搜关键字,有很多博客资料可以参考)。

我习惯使用的接口包是RMySQL,里面的核心函数主要涉及数据库连接,数据读写,数据查询三个方面,以下是三个方面的内容实例。

R与数据库的连接: library(“RMySQL”) library(“magrittr”)

数据库连接语句:

conn <- dbConnect( MySQL(), #数据库平台类型 dbname=”db1”, #数据库名称 username=”root”, #登录账号(MySQL初始安装时设置的账号) password=”**“, #登录密码(MySQL初始安装时设置的密码) host=”127.0.0.1”, #地址 port=3306 #端口号 )

summary(conn) #查看连接信息:

User: root Host: 127.0.0.1 Dbname: db1 Connection type: 127.0.0.1 via TCP/IP

dbGetInfo(conn) #查看连接详细信息(列表形式) $host ‘127.0.0.1’ $user ‘root’ $dbname ‘db1’ $conType ‘127.0.0.1 via TCP/IP’ $serverVersion ‘5.7.17-log’ $protocolVersion 10 $threadId 11 $rsId

dbListTables(conn) #查看该数据库连接内的表信息 ‘birthdays’ ‘company’ ‘dataanalyst’ ‘foodranking’ ‘foodtypes’ ‘orderinfo’ ‘str_date’ ‘userinfo’

dbDisconnect(conn) #关闭连接(数据通讯完成之后再运行)

R语言与MySQL数据库读写:

```r
(mydata <- iris)
dbWriteTable(
          conn = conn,      #连接名称
          name = "mydata",  #指定导入后的表名
          value = iris,     #指定要导入的R内存空间数据对象
          row.names = FALSE #忽略行名
          )                 #写表
dbListTables(conn)
'birthdays' 'company' 'dataanalyst' 'foodranking' 'foodtypes' 'mydata' 'orderinfo' 'str_date' 'userinfo'

mydata1 <- dbReadTable( 
         conn = conn,       #连接名称
         name = "mydata"    #数据库中的表名
          )                 #读表  
head(mydata1,10)

以上读写都是一次性操作,不能在读写的同时执行条件筛选等步骤,通常我们需要使用查询方式来获取指定条件的数据并返回数据框。

result1 <- dbSendQuery(conn = conn,  
                       statement = "SELECT * from mydata where `Sepal.Length` between 4 and 5 
                                   and `Species` = 'setosa' "
                                   #查询条件
                      ) %>% dbFetch()
                      #将查询结果返回数据框
head(result1,10)
dbClearResult(result1)   #清除查询(释放内存)

这一句清除的是查询,即上一句中的dbSendQuery部分(布包含后面的dbFetch,我只是为了方便一次性输出了)。

dbRemoveTable(conn,"mydata")   #删除表    
 dbListTables(conn)                             
'birthdays' 'company' 'dataanalyst' 'foodranking' 'foodtypes' 'orderinfo' 'str_date' 'userinfo'
dbDisconnect(conn)             #断开连接

Python:

Python与MySQL连接:

from sklearn.datasets import load_iris
import pandas as pd 
from sqlalchemy import create_engine
import MySQLdb
conn=MySQLdb.connect(
                    host="localhost",  #地址
                    user="root",       #登录名(同上)
                    passwd="******",   #登录密码(同上)
                    db="db1",          #要连接的数据库名称
                    charset="utf8"     #声明数据编码
                    )

engine = create_engine('mysql+mysqldb://root:password@localhost:3306/db1?charset=utf8')
#使用 sqlalchemy接口连接连接

Python与MySQL数据读写操作:

Pandas库中有封装过的数据读写函数,可以直接针对连接后的数据进行数据读写,非常方便。

iris = load_iris()
mydata = pd.DataFrame(
             iris.data[:,:],
             columns=['sepal_length','sepal_width','petal_length','petal_width']
             )
mydata.head(10)
#将数据框直接写入MySQL
mydata.to_sql(
       name = "iris",
       con  = engine
        )
#直接读取MySQL中的表:
mydata1 = pd.read_sql_table(
            table_name= "str_date",
            con =engine
            )
#通过查询过滤条件获取表数据:
mydata1 = pd.read_sql_query(
            sql = "SELECT * from iris where sepal_length between 4 and 5 and petal_width != 0.2 ",
            con =engine
            )

你可以通过以上MySQLlb接口建立的连接来执行查询操作!

cursor = conn.cursor()         #获取操作游标 
sql = "SELECT * from iris where sepal_length between 4 and 5 and petal_width != 0.2"
cursor.execute(sql)            # 使用execute方法执行SQL语句
cursor.fetchall()              #获取查询数据
cursor.close()                 # 关闭游标
conn.close()                   # 关闭数据库连接

总觉得MySQLlb的接口使用起来过于复杂,不直观,输出数据也不友好,还好pandas支持sqlalchemy的链接,使用pandas里面的函数可以基本满足写表、读表、执行查询的需要。

以上仅仅是MySQL与R语言、Python交互的基础函数,当然还有更为复杂的增删以及插入命令,如果需要了解详细内容可以参考RMySQL、sqlalchemy库的官方文档。

往期案例数据请移步本人GitHub: https://github.com/ljtyduyu/DataWarehouse/tree/master/File

本文分享自微信公众号 - 数据小魔方(datamofang),作者:杜雨

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2017-12-12

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 左手用R右手Python系列——动态网页抓取与selenium驱动浏览器

    关于基础的网络数据抓取相关内容,本公众号已经做过很多次分享,特别是R语言的爬虫框架(RCurl+XML/httr+rvest[xml2+selectr])已经形...

    数据小磨坊
  • 图表中包含负值的双色填充技巧

    今天教大家怎么在Excel里制作带负值的双色填充图表 正负值双色填充 ▼ 通常如果数据中带负值 默认的图表输出虽然能够显示负值 但是负值颜色与正值并没有任何区别...

    数据小磨坊
  • 高级筛选到底有多“高级”!

    今天跟大家分享excel筛选功能中隐藏的高级筛选功能! excel中的筛选窗口中,一直隐藏着一个不起眼的小菜单——高级:(如下图) ? 按照微软软件一贯风格,藏...

    数据小磨坊
  • 思路决定出路 | 101个MySQL调试和优化技巧

    MySQL是一个功能强大的开源数据库。随着越来越多的数据库驱动的应用程序,人们一直在推动MySQL发展到它的极限。这里是101条调节和优化 MySQL安装的技巧...

    小小科
  • 0711-6.3.0-如何将CM的外部PostgreSQL数据库迁移至MySQL服务

    在前面的文章《6.3.0-如何将CM内嵌PostgreSQL服务迁移至外部PostgreSQL服务》介绍了将CM内嵌的PostgreSQL迁移至外部Postgr...

    Fayson
  • DB2 Vs MySQL系列 | 体系架构对比

    前些日子,我们做了DB2 VS MySQL的数据类型的对比,今天我们将体系架构的对比分享给大家,让大家对这两类数据库有更深刻的认识。 ? DB2体系结构 ? ?...

    数据和云
  • 【迪B课堂】数据库修炼青铜篇のMySQL概览

    点击上方蓝字每天学习数据库 【迪B课堂】为腾讯云数据库产品经理迪B哥开设的面向数据库开发者、数据库运维人员、云端运维人员的系列培训课程,旨在帮助大家从入门到精...

    腾讯云数据库 TencentDB
  • 数据库流行度6月排行榜:Oracle飙升MySQL止跌回升

    六一儿童节,虽然是大家快乐的假期,但是也宣告了2018年进入中场。在DB-Engines的6月排行榜上,不同的数据库产品竞争也进入中场。先预祝大家中场收获满满!...

    数据和云
  • MySQL(一)之MySQL简介与安装

    大家可能都在用MySQL,其实我也是在用MySQL的,但是你知道吗?大部分人都是在windows中使用,这里将介绍一下在windows中的安装分为安装包安装与M...

    用户1195962
  • 在Windows上安装MySQL(转整)

    这里选择第二个安装包下载即可。 下载完成之后就选择安装那个下载到的文件,基本上都是选择next、execute之类。

    cuptobjut

扫码关注云+社区

领取腾讯云代金券