pythonカプセル化mysqlデータベース接続操作ベースクラス(pymysqlライブラリを使用)

2245 ワード

タイトルpymysqlモジュールパッケージのデータベース操作ベースクラス
 #   pymysql
import pymysql
import json
import logging
import os

class BaseDao(): # DAO: database access object

    def __init__(self, configFile='pymysql.json'):
        self.__connection = None
        self.__cursor = None
        self.__config = json.load(open(os.path.dirname(__file__) + os.sep + configFile, 'r'))  #   json             
        print(self.__config)
        pass

    #           
    def getConnection(self):
        #        ,        
        if self.__connection:
            return self.__connection
        #             
        try:
            self.__connection = pymysql.connect(**self.__config)
            return self.__connection
        except pymysql.MySQLError as e:
            print("Exception:" + str(e))
            pass
        pass

    #     sql        # sql  
    def execute(self, sql, params):
        try:
            self.__cursor = self.getConnection().cursor()
            # result  sql        
            if params: #    sql  
                result = self.__cursor.execute(sql, params)
            else:      #     sql  
                result = self.__cursor.execute(sql)
            return result
        except (pymysql.MySQLError, pymysql.DatabaseError, Exception) as e:
            print("         :" + str(e))
            self.rollback()
            pass
        finally:
            pass
        pass

    def fetch(self):
        if self.__cursor:
            return self.__cursor.fetchall()
        pass

    def commit(self):
        if self.__connection:
            self.__connection.commit()
        pass

    def rollback(self):
        if self.__connection:
            self.__connection.rollback()
        pass

    #          
    def getLastRowId(self):
        if self.__cursor:
            return self.__cursor.lastrowid
        pass

    def close(self):
        if self.__cursor:
            self.__cursor.close()
        if self.__connection:
            self.__connection.close()
        pass

    pass

タイトルはJSONで書かれた構成パラメータファイルを使用します.
‘pymysql.json’ {“host”:“127.0.0.1”, “user”:“root”,“password”:“root”, “database”:“db_test_shop1”, “port”:3306, “charset”:“utf8”}