专栏首页python3Python 封装MySQL类

Python 封装MySQL类

   以后再也不用每次都重新写啦!

import MySQLdb 
OperationalError = MySQLdb.OperationalError
class MySQL: 
    def __init__(self,host,user,password,port=3306,charset="utf8"): 
        self.host=host 
        self.port=port
        self.user=user 
        self.password=password 
        self.charset=charset 
        try: 
            self.conn=MySQLdb.connect(host=self.host,port=self.port,user=self.user,passwd=self.password)
            self.conn.autocommit(False)
            self.conn.set_character_set(self.charset) 
            self.cur=self.conn.cursor() 
        except MySQLdb.Error as e: 
            print("Mysql Error %d: %s" % (e.args[0], e.args[1])) 
                    
    def __del__(self):
        self.close()
                         
    def selectDb(self,db): 
        try: 
            self.conn.select_db(db) 
        except MySQLdb.Error as e: 
            print("Mysql Error %d: %s" % (e.args[0], e.args[1])) 
                         
    def query(self,sql): 
        try: 
            n=self.cur.execute(sql) 
            return n 
        except MySQLdb.Error as e: 
            print("Mysql Error:%s\nSQL:%s" %(e,sql)) 
                         
    def fetchRow(self): 
        result = self.cur.fetchone() 
        return result 
                         
    def fetchAll(self): 
        result=self.cur.fetchall() 
        desc =self.cur.description 
        d = [] 
        for inv in result: 
            _d = {} 
            for i in range(0,len(inv)): 
                _d[desc[i][0]] = str(inv[i]) 
                d.append(_d) 
        return d 
                         
    def insert(self,table_name,data): 
        columns=data.keys()
        _prefix="".join(['INSERT INTO `',table_name,'`'])
        _fields=",".join(["".join(['`',column,'`']) for column in columns])
        _values=",".join(["%s" for i in range(len(columns))])
        _sql="".join([_prefix,"(",_fields,") VALUES (",_values,")"])
        _params=[data[key] for key in columns]
        return self.cur.execute(_sql,tuple(_params)) 
                       
    def update(self,tbname,data,condition):
        _fields=[]
        _prefix="".join(['UPDATE `',tbname,'`','SET'])
        for key in data.keys():
            _fields.append("%s = %s" % (key,data[key]))
        _sql="".join([_prefix ,_fields, "WHERE", condition ])
                           
        return self.cur.execute(_sql)
                       
    def delete(self,tbname,condition):
        _prefix="".join(['DELETE FROM  `',tbname,'`','WHERE'])
        _sql="".join([_prefix,condition])  
        return self.cur.execute(_sql)
                         
    def getLastInsertId(self): 
        return self.cur.lastrowid 
                         
    def rowcount(self): 
        return self.cur.rowcount 
                         
    def commit(self): 
        self.conn.commit() 
                       
    def rollback(self):
        self.conn.rollback()
                         
    def close(self): 
        self.cur.close() 
        self.conn.close()
                           
if __name__=='__main__':
    n=MySQL('127.0.0.1','root','123456',3306)
    n.selectDb('test')
    tbname='map'
    a=({'id':3,'x':3,'y':3},{'id':4,'x':4,'y':4},{'id':5,'x':5,'y':5})
    for d in a:
        n.insert(tbname,d)
    n.commit()

 一个重量级的MySQL-Python 封装类:facebook python mysql

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 关于Python制作简单的图形界面GUI

    py3study
  • Python写的俄罗斯方块

    简单瞅了下Tkinter,和Canvas配合在一起,还算是简洁的界面开发API。threading.Thread创建新的线程,其多线程机制也算是方便。

    py3study
  • Python操作Mysql数据库的实现

    1、需要使用的模块MySQLdb,下载地址为:http://sourceforge.net/projects/mysql-python/

    py3study
  • 三、wss连接B站弹幕

    py3study
  • unslider源码分析

    根据Bootstrap中文网的介绍,Unslider一个超小的 jQuery轮播(slider)插件,参照这个汉化版的介绍页面,这个插件有你需要的优点,但是本...

    用户3579639
  • MJRefresh源码剖析与学习

    建议查看原文:https://www.jianshu.com/p/23c876f8ae39(不定时更新)

    Dwyane
  • 商业篇 | 使用python开发性格分析工具卖钱

    如此不均衡的贫富差距,各行业的领导者如何能管理好公司,让员工们即努力产出,又能安于现状呢?每个领导者必学的一门课程就是职场心理学。只有你充分了解员工心理与对应的...

    叫我龙总
  • 福利来啦,送给大家一个小游戏的源码,不要错过哟(复制粘贴运行即可玩)

    从小到大玩过很多的游戏,在我小时候,能玩游戏的地方不多,那时玩游戏都是偷摸玩的,只要是个游戏就觉得非常有趣,比较经典的有魂斗罗,拳皇,超级玛丽,贪吃蛇,俄罗斯方...

    松鼠爱吃饼干
  • 喜欢的歌曲不在一个平台怎么办?你需要一个自己专属的音乐播放器

    网易云音乐,QQ音乐,酷狗音乐,是我们经常会用到的音乐软件,当然有时候我们因为一首歌,需要在各大音乐平台上跳转,那么我们完全可以使用python自己打造一款音乐...

    松鼠爱吃饼干
  • python实现队列

    队列是一种先进先出的数据类型,它的跟踪原理类似于在超市收银处排队,队列里的的第一个人首先接受服务,新的元素通过入队的方式添加到队列的末尾,而出队就是将队列的头元...

    一墨编程学习

扫码关注云+社区

领取腾讯云代金券