import os import pymysql WEBANALYSIS_SETTINGS_PATH = '/var/tmp/mode2_webanalysis_settings' class mwDB: """ MySQL接続クラス Attributes ---------- ctrid : str コンテナ名 domain : str ドメイン名 usedb : str DB名(指定しない場合はmode2_webanalysis) """ def __init__(self, domain=False, usedb=False, DictCursor=False): db_settings = get_settings(WEBANALYSIS_SETTINGS_PATH, domain) user_id = db_settings['mysql_user'] user_password = db_settings['mysql_password'] db_name = db_settings['mysql_db'] if usedb: # mode2_webanalysisの利用を想定 if domain: db_name = usedb+'_'+domain else: db_name = usedb if DictCursor: self.connection = pymysql.connect(host="localhost", user=user_id, password=user_password, db=db_name, charset='utf8', cursorclass=pymysql.cursors.DictCursor ) else: self.connection = pymysql.connect(host="localhost", user=user_id, password=user_password, db=db_name, charset='utf8', ) def fetch(self, sql_query, value=None): with self.connection.cursor() as cursor: if value: cursor.execute(sql_query, value) else: cursor.execute(sql_query) results = cursor.fetchall() return results def fetchone(self, sql_query, value=None): with self.connection.cursor() as cursor: if value: cursor.execute(sql_query, value) else: cursor.execute(sql_query) results = cursor.fetchone() return results def execute(self, sql_query): with self.connection.cursor() as cursor: result = cursor.execute(sql_query) return result def commit(self): self.connection.commit return def close(self): self.connection.close() return def get_settings(file_path, domain=False): """ DB接続に必要なID,PASS設定を取得 Paramerts --------- file_path : str DB接続に関する設定情報 domain : str webanalysisが有効になっているドメイン名(任意) Returns ------- dict mysql_user : str webanalysis用mysqlユーザ mysql_password : str webanalysis用mysqlユーザのパスワード mysql_db : str webanalysis用データベース名 """ if domain: domain_str = "_" + domain else: domain_str = "" settings = {} try: if not os.path.isfile(file_path+domain_str): print("no setting file: %s" % (file_path+domain_str)) else: settings_file = open(file_path+domain_str, 'r') settings_data = settings_file.readlines() settings_file.close() if len(settings_data) > 0: for t in settings_data: t = t.split("=") k = t[0] v = t[1].replace("\n", "") settings[str(k)] = v return settings except Exception as e: print(e)