Python从Mysql获取数据为数据分析做准备

感谢关注天善智能,走好数据之路↑↑↑
欢迎关注天善智能,我们是专注于商业智能bi,大数据,数据分析领域的垂直社区,学习,问答、求职一站式搞定!
每周2-3场免费数据领域公开课,每月线下活动,欢迎关注!
最近学了一下 sql ,因为做数据分析不会sql真不行。
平时学的都是 python,所以如果要用 pandas 做数据分析,数据除了导入 excel 和 csv 文件,应该还要会从数据库中导入数据到 python 中,于是我进行了以下的学习和探索。
环境
python 3.x
ide : juyter notebook
安装必要的模块
进入:
http://lfd.uci.edu/~gohlke/pythonlibs/#mysqlclient
找到适合自己的版本
下载到本地(我的下载到e:盘根目录)
然后打开 cmd 如下图安装
这里推荐本地安装
使用python连接数据库
import mysqldb
如果导入模块没报错,恭喜你,安装模块成功了!
通过connect 方法连接本地 mysql 数据库,这里要注意你要修改的或许是登录密码和数据库名称
创建游标
首先,我们要创建一个游标
cursor = conn.cursor()
什么是游标呢?
游标就相当于一个缓冲区,存放暂时的结果(这是我的理解)
就像去超市买买买,你可能要推一个手推车,这里的手推车就像游标,推着手推车去对应的货架完成挑选操作,而手推车最终会在出超市时候清空
观察数据库数据
我本地的数据库 test 中有个 tdb_goods 的表
表的内容如上图所示
有商品的 id,名称,种类 id,品牌 id,是否在售和是否下架几个字段
一共有23条记录
获取数据
我们使用 select 语句可以获取数据
首先我们用游标的 execute 方法执行一句 sql 语句获取 tdb_goods 中的所有数据
然后使用游标的 fetchone 方法取出其中一条记录并且展现出来
如上图,我们取出的数据是元组形式
当然,我们应该养成打开后关闭的好习惯,所以,在操作结束,应该断开与数据库的连接
conn.close()
异常处理
当我们在操作时,希望和在 mysql 数据库中一样,异常时会提示异常信息
那么我们就要加入异常处理模块
这里异常时,就将异常的信息告知我们了
我们将以上代码整理一下:
当我们将 fetchone 改成 fetchall 时候,就是取出所有信息了
使用面向对象编程
注:这里定义了一个类叫 mysql,然后用类创建一个对象名为 object,在创建对象的时候,类的初始化时调用连接数据库函数
创建了一个叫 object 的对象,使用对象的 get_a 方法从数据库 tdb_goods 中选出 cate_id=1 的一条记录,在 get_a 函数最后位置断开数据库连接
结果如下:
插入记录到数据库
注:这里,将一条记录插入了数据库,但是当我执行完这条语句(没报错)
刷新数据库并没有新增一条记录
划重点:在这里,有一个 self.connmit(),这个叫提交,如果不写这句,就无法将所做修改保存的数据库中
加上这个之后(加在以下两句之间):
可以看到,数据成功写入数据库了~
数据导入pandas(数据分析准备)
如果是用 pandas 做数据分析
简单的几行代码即可将 mysql 的数据导入 pandas 进行分析
导入表中所有数据并查看前五行
选你所想
一般来说,学 sql 增删查改基础中,查用的比较多,接下来我们简单使用一些 sql 查询
查找 cate_id=3 的记录:
查找价格大于5000的商品,注意这里默认按照 goods_id 排序的:
加上 order by `goods_prices` 之后,就是按照价格升序排列:
sql 默认的是按照升序排列,如果想按照降序排列,可以这样写:
查找所有的平板电脑:
将数据库文件导出成csv
df.to_csv('e:\goods_info.csv', encoding = 'utf-8', index = false)
可以看到,数据成功导出成 csv 了~
最后养成好习惯,断开与数据库的连接:
我们再次查询,发现报错了,说明确实已经断开了连接:
如果运行代码报错,很可能是你的数据库名和数据库登录密码没有修改~
文中如有错误和叙述不妥之处,望指正。
本文作者:天善智能社区学员王大伟
天善社区博客地址:https://hellobi/u/wangdawei/articles
天善学院svip正火爆报名中!包含业务知识一站通、excel bi商业智能、七周成为数据分析师、对话大数据系列技术、r语言15案例、python3网络爬虫实战案例、python机器学习、python数据科学家精华实战课程、深度学习模型和实战课程、数据分析报告共10套课程,其他课程只需五折即可,欢迎大家关注报名。https://hellobi/svip