前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >技术|Python中优雅地打开mysql

技术|Python中优雅地打开mysql

作者头像
做数据的二号姬
发布2020-05-22 15:40:23
发布2020-05-22 15:40:23
2.1K00
代码可运行
举报
运行总次数:0
代码可运行

17

2020-01

技术|Python中优雅地打开mysql

数据千千万,存储在MySQL中还是比较常见的~尝试一下Python+MySQL的组合,体验还是非常好的~【虽然和Excel还是差了很多,万物不如Excel】

LEARN MORE

图片来自网络,如侵删

安装pymysql

一个好用的包就需要一个非常容易让你记住的名字,pymysql就是这么简单粗暴的存在。相比于pandas啊,numpy这种名字,pymysql这个包的名字就实在是太好理解了~(顺便一提,R语言中也有一个类似的包,名字叫RMySQL,使用体验和pymysql相比么,R对中文没有python辣么友好)。

第一步,显而易见,安装pymysql:

还是在Anaconda的环境下

第一步,打开amaconda prompt

输入:conda install pymysql

安装还是比较简单的,接下来我们来调用这个包~

调用包

这依然是比较简答的一个步骤:import pymysql

pandas numpy 和matplotlib这些常用的包由于都会用到我就顺便导进去了~

然后可以输入help(pymsql)查看说明:

有兴趣的小伙伴可以仔细阅读一下,不过文档过长,大家可以在网上查看更加详细的教程:

https://github.com/PyMySQL/PyMySQL

或者

https://www.runoob.com/python3/python3-mysql.html

实例演示

首先第一步,连接数据库,相对简单:

conn = pymysql.connect (host='地址名称',user='用户名称',port='端口',password='密码',db='数据库名')

我以本地计算机的crmdata数据库为例:

友情建议,第一次尝试不要对公司的数据库下手,万一一个不小心删库了,就只能连夜跑路了~

接下来我们创建一个查询页面:

cursor = conn.cursor()

使用cursor.execute进行执行,简单来说就是

cursor.execute(sql语句)

虽然在上面的括号中直接写sql语句也没有问题,但是我习惯于单独写一行给sql赋值

这里有一个小提示,很多教程都说了sql语句用两个单引号引起来就好('sql语句')确实是这样的,但是我建议大家使用三个双引号(“”“SQL语句”“”)来定义,因为单引号会和SQL语句中本身的单引号混淆。

接下来就是调出数据了,语句也很简单:

cursor.fetchall()

直接执行的话你会发现调出的单纯是数据而已,不含标题行,所以还需要加上一句:cols = cursor.description

最后执行(conn.commit),断开和数据库的连接(conn.close)就好了:

还没有完,这样读出来的数据在后续处理的时候稍微会有点问题,我们最好把数据转为数据框(众所周知,数据框dataframe在后续分析处理中非常常用,当然根据不同的业务场景,也可以转化为其他格式):

col = []

for i in cols:

col.append(i[0])

data = list (map(list,data))

data = pd.DataFrame(data,columns=col)

最后可以检查一下数据读取是否成功

嗯,非常好,数据读取成功啦~

完整代码

代码语言:javascript
代码运行次数:0
运行
复制
#创建查询页面
cursor = conn.cursor()
#编写SQL
sql =""" select `充值0107`.* from `充值0107` where `充值0107`.`创建时间`>'2019-10-01 00:00:00' """  
#执行SQL
cursor.execute(sql)
#包含字段名称
cols = cursor.description
#调出数据
data = cursor.fetchall()
#执行
conn.commit
#断开和数据库的连接
conn.close
#将数据转化为dataframe
col = []
for i in cols:
    col.append(i[0])
data = list (map(list,data))
data = pd.DataFrame(data,columns=col)
#输出数据,查看读取是否成功
print(data)
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2020-01-17,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 做数据的二号姬 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档