python连接mysql类

贡献一个python 连接mysql的操作。。。

 
#-*- coding:utf-8 -*-
import MySQLdb

def connect_db(host, port, user, password, db):
    try:
        conn = MySQLdb.connect(
            host=host,
            port=port,
            user=user,
            passwd=password,
            db=db,
            use_unicode=True,
            charset='utf8',
            connect_timeout=2,
            cursorclass=MySQLdb.cursors.DictCursor)
        return conn
    except Exception, e:
        print "Fatal: connect db fail:%s" % e
        return None

class DB(object):

    def __init__(self, host, port, user, password, db):
        self.host = host
        self.port = port
        self.user = user
        self.password = password
        self.db = db
        self._conn = connect_db(host, port, user, password, db)

    def connect(self):
        self._conn = connect_db(self.host, self.port, self.user, self.password, self.db)
        return self._conn

    def execute(self, *a, **kw):
        cursor = kw.pop('cursor', None)
        try:
            cursor = cursor or self._conn.cursor()
            cursor.execute(*a, **kw)
        except (AttributeError, MySQLdb.OperationalError):
            self._conn and self._conn.close()
            self.connect()
            cursor = self._conn.cursor()
            cursor.execute(*a, **kw)
        return cursor

    def commit(self):
        if self._conn:
            try:
                self._conn.commit()
            except MySQLdb.OperationalError:
                self._conn and self._conn.close()
                self.connect()
                self._conn and self._conn.commit()

    def rollback(self):
        if self._conn:
            try:
                self._conn.rollback()
            except MySQLdb.OperationalError:
                self._conn and self._conn.close()
                self.connect()
                self._conn and self._conn.rollback()

上面这段使用的时候直接写sql就好。

 
query = "select distinct %s from physics_list" % (key)
cursor = DB.execute(query)
rows = cursor.fetchall()  # cursor.fetchone() 查询一行数据
cursor and cursor.close()
print rows
未经允许不得转载:99ya » python连接mysql类

抢沙发