Python操作Mysql麻烦,敢不敢自己封装一个包可好?

数据分析免不了使用Python操作Mysql,直接操作Mysql的表,对其进行操作;或者直接将Python中的数据集统计的结果保存到Mysql。这个时候,一个sql客户端连接是免不了的,每次都要写一大堆代码,确实很麻烦。

待你代码写成,女神头发都白了!

那么,何不对这个功能,通常是自己业务常用的功能做个二次封装呢?这样使用起来会事半功倍,很方便。

显然,常用业务统计,肯定会有很多,每次我们都重复地初始化mysql连接,然后获取cursor(游标),执行(查询,插入,删除),关闭数据库操作,无疑是浪费时间的,我们希望将自己从烦劳的重复代码中解放出来,代码需要简化。代码简化主要从两个方面:

1)、功能封装;

2)、再业务封装;

初级阶段的业务封装对后期使用是不友好的,这里只对功能进行封装,防止后面会有其它功能业务;

1、考虑到,获取连接可以是个单例,数据库可以有测试与线上,query、execute,关闭操作,是可以封装的。

2、代码封装成为一个方法到一个脚本中本次使用方便,其它脚本还得重新写,这是不行的,怎么办,自己写模块,封装成包,放在本地,供自己和其它同事使用。

这里主要封装了常用的时间模块,比如获取前2个小时,前5天的日期列表等等,然后就是sql模块,着重是sql模块,放在sql目录下:

# -*- coding:utf-8 -*-import MySQLdbclass MysqlClient:    def __init__(self, db, host = "0.0.0.0", user = "root", passwd = "root", charset='utf8'):7        self.conn = MySQLdb.connect (host = host, user = user, passwd = passwd, db= db, charset=charset)    def insert(self, sql):         cursor = self.conn.cursor()        cursor.execute(sql)        cursor.close()        self.conn.commit()    def query(self, sql):        cursor = self.conn.cursor()        cursor.execute(sql)        result = cursor.fetchall()        cursor.close()        return result    def close(self):        self.conn.close ()

这里定义了mysql的获取连接,查询、插入、关闭连接功能。默认参数是测试数据库连接信息,使用其它数据库只需要传入对应数据库连接参数即可。

这样下次使用的时候,只需要导入对应类即可

结果很甜

sys.path.append('/home/hadoop/scripts/python_module'),导入环境,

导入对应包即可。

# -*- coding: utf-8 -*-import syssys.path.append('/home/hadoop/scripts/python_module')import keguang.timedef as timedef   import keguang.sql.mysqlclient as mysql

这样就拿到了,hive,mysql操作模块,获取连接,查询、插入、关闭连接只需要用拿到的对象的方法,传入参数即可。

mclient = mysql.MysqlClient(dbName)

这就拿到了一个hive连接,不传参数,拿到的是测试库连接。

这样只需要定义sql,调用对应方法即可。比如,我们定义一个sql

。。。。。。。。。。。。。

作者:柯广

篇幅有限更多请见扩展链接:http://www.mark-to-win.com/tutorial/52223.html

发表评论
留言与评论(共有 0 条评论) “”
   
验证码:

相关文章

推荐文章