(self, get)
| 988 | |
| 989 | # 删除数据库 |
| 990 | def DeleteDatabase(self, get): |
| 991 | if not hasattr(get, "id"): |
| 992 | return public.returnMsg(False, "缺少参数!id") |
| 993 | if not hasattr(get, "name"): |
| 994 | return public.returnMsg(False, "缺少参数!name") |
| 995 | db_id = get.id |
| 996 | db_name = get.name |
| 997 | db_find = public.M("databases").where("id=? AND name=? AND LOWER(type)=LOWER('mysql')", (db_id, db_name)).find() |
| 998 | if not db_find: |
| 999 | return public.returnMsg(False, "数据库[{}]不存在".format(db_name)) |
| 1000 | |
| 1001 | if db_find["db_type"] == 0 or db_find["sid"]: # # 删除本地数据库 |
| 1002 | if os.path.exists("data/recycle_bin_db.pl") and db_find["sid"] == 0: |
| 1003 | return self.DeleteToRecycleBin(db_name) |
| 1004 | |
| 1005 | username = db_find["username"] |
| 1006 | # 删除MYSQL |
| 1007 | mysql_obj = public.get_mysql_obj_by_sid(db_find["sid"]) |
| 1008 | if not mysql_obj: |
| 1009 | if db_find["sid"] != "0": |
| 1010 | return public.returnMsg(False, "远程数据库连接失败,请检查远程数据库是否正常/账户密码是否正确".format(db_name)) |
| 1011 | else: |
| 1012 | return public.returnMsg(False, "数据库[{}]连接失败,请检查数据库是否启动/root密码是否正确".format(db_name)) |
| 1013 | db_exists = mysql_obj.execute("SHOW DATABASES LIKE '{}'".format(db_name)) |
| 1014 | if db_exists: |
| 1015 | result = mysql_obj.execute("DROP database `{}`".format(db_name)) |
| 1016 | isError = self.IsSqlError(result) |
| 1017 | if isError != None: return isError |
| 1018 | user_host = mysql_obj.query("select Host from mysql.user where User='{}'".format(username)) |
| 1019 | if isinstance(user_host, list): |
| 1020 | for host in user_host: |
| 1021 | mysql_obj.execute("DROP USER `{}`@`{}`".format(username, host[0])) |
| 1022 | mysql_obj.execute("flush privileges") |
| 1023 | # 删除SQLITE |
| 1024 | public.M('databases').where("id=? AND name=? AND LOWER(type)=LOWER('mysql')", (db_id, db_name)).delete() |
| 1025 | public.WriteLog("TYPE_DATABASE", 'DATABASE_DEL_SUCCESS', (db_name,)) |
| 1026 | try: |
| 1027 | self.delete_quota_entry(db_name) |
| 1028 | except: |
| 1029 | pass |
| 1030 | |
| 1031 | return public.returnMsg(True, 'DEL_SUCCESS') |
| 1032 | |
| 1033 | # 删除数据库时调用的主函数 |
| 1034 | def delete_quota_entry(self, db_name): |
no test coverage detected