python进阶与数据操控_零基础机器学习Python进阶:Python操作MySql

阅读文本大概需要 6 分钟

前言

基础写了十篇,以后会继续更,这是第二篇进阶,文末会放上链接,进阶分成另一个系列,柠檬有时间会整理好菜单栏让大家更方便的阅读基础和进阶,柠檬会把自己在当时做的项目写到进阶里面来,总体来说就是更接地气的学Python,因为我们所学的书本知识离真正的做项目还是有一定的距离的,希望进阶篇能让大家对工作中的Python用法有更深的认识。

项目介绍

还是先简单介绍下最近在做的项目,大概就是将MySql格式的数据用Python读取然后清洗格式,放到算法中跑了以后将输出整理成MySql格式再打包给其他公司。

听起来不难,但实际做起来就能感觉到更加的接地气了,就像以前柠檬说的一定要把切片学好,因为当我们接触到实际的代码的时候就会发现到处都是冒号(切片),只有比较好的代码基本功才能不黑人脸。

先解释下什么是更接地气,举个栗子,这次柠檬拿到的是MySql格式的数据,数量倒是不多,也就八十多万条,分两个,一个是字段解释,一个是数据包。每条数据大概有32个字段,也就是80w * 32的矩阵。虽然数据量不是很大,但是这就涉及到Python和数据库的连接了。我相信大多数人在本科都应该是学过Sql的,柠檬也能看得懂甚至是能写Sql语句的,但是如果真正的要做项目那就不止是要会Sql语句了,而是要知道怎么用Python去操作数据库了。

所以你看,我们以为自己会,甚至敢在简历上写熟练掌握MySql或者熟练掌握SQLServer,但其实我们会吗?我们不会。

但是值得担心吗?不值得。

为什么?因为看完这篇文章以后你就会了 (炫耀Mac的表情(手动狗头脸))。

Mac操作MySql

为什么选择MySql?记得柠檬说的选择语言吗?我们现在学习的是Python,但语言不重要,下面是小米的机器学习算法工程师的招聘要求,里面也写了对数据库的要求,柠檬已经把它框出来了,大家可以看到,精通一门就可以了,语言永远是工具,千万别本末倒置。稳定,免费这两个理由就够了,下面就来看看Mac如何操作MySql。

下载安装太基本柠檬就不说了,如果有不懂的请找柠檬就行了:https://www.google.com.hk/。

安装以后在系统设置中找到MySql打开连接,如下图。

打开终端,切到MySql的安装位置,然后输入mysql -uXXX -pXXX,-u后面是用户名,-p后面是密码,如果显示下面的信息就说明已经连接成功了。

这个时候我们就可以做一些基础操作了,如下图柠檬显示了所有的已存在的数据库,然后切换到BC数据库,可以看到两条语句都操作成功了。

但我们不能一直用终端来操作,不然现在也直接用终端去写Python而不是Pycharm了,柠檬给大家推荐一款非常好用的数据库可视化操作软件:DBveaver。具体如下图,下载安装柠檬就不说了,今天的主题是如何操作数据库,下面就开工。

DBeaver界面

用Python操作MySql

终于要开始今天的主题了,用Python操作MySql很方便,其实港真Python操作什么都不太难,这也是依靠着Python那强大的库资源,所以柠檬才这么喜欢用Python优雅的搬砖。(再次手动狗头)

今天的代码主要是依靠一个库:pymysql。没错,就一个库就可以完成所有的sql操作,是不是很优雅,下面就来看看具体操作吧。

首先我们用DBaver创建一个叫MyDB的数据库,然后用Python来操作它。

创建MyDB数据库

创建table

大家可以看到,我们首先获取一个游标,之后就用它来执行sql语句,注意在中间我们执行了一条sql语句:

cursor.execute("DROP TABLE IF EXISTS Student")

它是确保我们在建立Student表的时候不会跟数据库中以前存在的Student表起冲突。后面的语句就很容易理解了,如果有数据库的同学应该很容易就能读懂它的意思:创建表Student,里面有三个字段:ID, Name, Grade,前两个字段是字符型而后面的Grade字段则是整数类型,并且ID字段是不能为NULL的。

是不是很简单?就这么八行代码,就创建了一个我们所需要的表结构。下面就让我们一起来操作这个表吧。

插入数据

还是先看代码。

插入数据

总体来说跟上面的创建数据库差不多,非常好理解,但是我们要注意一下在执行完了sql语句以后还需要加上一个comit()方法,这是跟创建表的代码的最大的区别。

还有一个小细节大家可以注意下,那就是柠檬会在出现异常的时候输出一句“插入数据失败!”并且用roollback()方法给回撤,这不是必要的,但可以让自己写出来的代码更优雅、更具有鲁棒性。相信大家也不想因为插入的格式不对而出现稀奇古怪的页面然后又重新去找错误吧。(第三次手动狗头)

查询语句

查询和删除语句跟其他语句都差不多,都挺简单的,但如果涉及到实际项目的话可能就更接地气些,柠檬想查询所有eval_index_code为030301的数据,实际代码如下。

结果

大概三十多万条我们要找的数据,柠檬后面要做的就是将这些数据整理成自己想要的格式然后放到模型里面去跑来跑去、跑来跑去。。。开个玩笑,放到模型里面跑然后将结果发到对口的公司即可。

总结

今天我们一起学习了如何用Python操作MySql数据库,是不是很接地气,柠檬在考虑要不要在写完文章以后将练习的代码放出来,如果有需要的童鞋可以在后台call柠檬,柠檬会给你发,如果人多的话以后柠檬会在文末附上源码,不知不觉已深夜,关电脑,晚安。

关联文章:

你可能感兴趣的:(python进阶与数据操控)