pymysql類

import pymysql

'''
簡化mysql 的數據庫的操作封裝成類調用
主要一個類的實例為一個數據庫的連接,
處理這個流程
優化封裝成靜態方法調用避免多次連接數據庫造成連接資源浪費
'''


class mysqlDB(object):

    def __init__(self, host, user, passwd, db, port=3306, charset='utf8'):
        self.host = host
        self.port = port
        self.db = db
        self.user = user
        self.passwd = passwd
        self.charset = charset
        self.connection()

    # 創建一個連接
    def connection(self):
        try:
            self.conn = pymysql.connect(host=self.host, port=self.port, user=self.user, passwd=self.passwd, db=self.db,
                                        charset=self.charset)
            self.cur = self.conn.cursor()
        except pymysql.Error as e:
            self.Error = str(e.args[0]) + str(e.args[1])
            raise

    # 關閉連接
    def closeconn(self):
        self.cur.close()
        self.conn.close()

    # 查詢一條數據
    def getOneData(self, sql):
        try:
            self.cur.execute(sql)
            return self.cur.fetchone()
        except pymysql.Error as e:
            self.Error = str(e.args[0]) + str(e.args[1])
            raise

    # 查詢多條數據
    def getAllData(self, sql):
        try:
            self.cur.execute(sql)
            return self.cur.fetchall()
        except pymysql.Error as e:
            self.Error = str(e.args[0]) + str(e.args[1])
            raise

    # 添加/刪除/修改
    def crud(self, sql):
        try:
            n = self.cur.execute(sql)
            self.conn.commit()
            return n
        except pymysql.Error as e:
            self.conn.rollback()
            self.Error = str(e.args[0]) + str(e.args[1])
            raise

    # 批量插入
    def execMany(self, sql, vals):
        try:
            n = self.cur.executemany(sql, vals)
            print(n)
            self.conn.commit()
        except pymysql.Error as e:
            self.conn.rollback()
            self.Error = str(e.args[0]) + str(e.args[1])
            raise


class mysqlTB(object):
    def __init__(self, db):
        self.db = db

    def getAllData(self, sql):
        self.db.connection()
        data = self.db.getAllData(sql)
        self.db.closeconn()
        return data

    def crud(self,sql):
        self.db.connection()
        try:
            self.db.crud(sql)
        except Exception as e:
            print('插入數據報錯!', str(e))
        finally:
            self.db.closeconn()


if __name__ == '__main__':

    # ['211', '李四'],
    # ['311', '王五']
    # insert_data = [[311, '王五']]
    try:
        mydb = MysqlDB('180.103.66.133', 'root', 'Dg#D21bT$s', 'daguan_fileconvert')
        # sql = "select * from test "
        # res = mydb.getAllData(sql)
        # print(res)
        # for item in res:
        #     print("name:%s,age:%s" % (item[0], item[1]))
        # print('------------第二次喲------------')
        # mydb.crud("insert into test(id,address) value ('%d','%s')" % (12,'LOKing'))
        insert_data = [
            [98, '張三1'],
            [100, '李四1'],
            [27, '王五1']
        ]
        sql = "INSERT INTO test(age,address) VALUES (%s,%s)"

        # print('insert_data:',insert_data)
        mydb.execMany(sql, insert_data)
        # sql = 'INSERT INTO test(age, address) VALUES (%d, %s)'

        # mydb.execMany(sql, insert_dat
        #         # for item in res:a)
        #     print("name:%s,age:%s" % (item[0], item[1]))
    except Exception:
        print("出錯啦:" + mydb.Error)
    finally:
        mydb.closeconn()
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容