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

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

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

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

R与数据库的连接:

library(“RMySQL”)

library(“magrittr”)

数据库连接语句:

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

<0>

User:   root

Host:   127.0.0.1

Dbname: db1

Connection type: 127.0.0.1 via TCP/IP

0>

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

?wx_fmt=jpeg

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

result1 % dbFetch()

#将查询结果返回数据框head(result1,10)

dbClearResult(result1)   #清除查询(释放内存)

b2cea5f8f02efc10caa271930837cc72.png

这一句清除的是查询,即上一句中的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)

#将数据框直接写入MySQLmydata.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            )

95157fa1b7a40863acda6465cde67f8b.png

7831eca1c8ce2625bd678636d9f2839f.png

c4ef01dc619b633492e9a891138ed456.png

b0c24d52944fb8c4b74b5317b2c643fa.png

你可以通过以上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

欢迎关注数据小魔方qq交流群

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值