@备份数据库 id 数据库id
(self, args)
| 599 | return public.returnMsg(True, 'DEL_SUCCESS') |
| 600 | |
| 601 | def ToBackup(self, args): |
| 602 | """ |
| 603 | @备份数据库 id 数据库id |
| 604 | """ |
| 605 | if not os.path.exists(self._PGDUMP_BIN): |
| 606 | return public.returnMsg(False, '缺少备份工具,请先通过软件商店pgsql管理器!') |
| 607 | |
| 608 | if not hasattr(args, "id"): |
| 609 | return public.returnMsg(False, "缺少参数!id") |
| 610 | db_id = args.id |
| 611 | table_list = getattr(args, "table_list", []) |
| 612 | storage_type = getattr(args, "storage_type", "db") |
| 613 | |
| 614 | if storage_type not in ["db", "table"]: |
| 615 | return public.returnMsg(False, "参数错误!storage_type") |
| 616 | |
| 617 | db_find = public.M('databases').where("id=? AND LOWER(type)=LOWER('pgsql')", (db_id,)).find() |
| 618 | if not db_find: return public.returnMsg(False, '数据库不存在!') |
| 619 | |
| 620 | if not db_find["password"].strip(): |
| 621 | return public.returnMsg(False, '数据库密码为空,请先设置密码.') |
| 622 | |
| 623 | db_name = db_find["name"] |
| 624 | |
| 625 | db_user = "postgres" |
| 626 | db_host = "127.0.0.1" |
| 627 | if db_find["db_type"] == 0: |
| 628 | db_port = panelPgsql.get_config_options("port", int, 5432) |
| 629 | |
| 630 | t_path = os.path.join(public.get_panel_path(), "data/postgresAS.json") |
| 631 | if not os.path.isfile(t_path): |
| 632 | return public.returnMsg(False, "请先设置管理员密码!") |
| 633 | db_password = json.loads(public.readFile(t_path)).get("password", "") |
| 634 | if not db_password: |
| 635 | return public.returnMsg(False, "数据库密码为空!请先设置数据库密码!") |
| 636 | elif db_find["db_type"] == 1: |
| 637 | # 远程数据库 |
| 638 | conn_config = json.loads(db_find["conn_config"]) |
| 639 | db_host = conn_config["db_host"] |
| 640 | db_port = conn_config["db_port"] |
| 641 | db_user = conn_config["db_user"] |
| 642 | db_password = conn_config["db_password"] |
| 643 | elif db_find["db_type"] == 2: |
| 644 | conn_config = public.M("database_servers").where("id=? AND LOWER(db_type)=LOWER('pgsql')", db_find["sid"]).find() |
| 645 | db_host = conn_config["db_host"] |
| 646 | db_port = conn_config["db_port"] |
| 647 | db_user = conn_config["db_user"] |
| 648 | db_password = conn_config["db_password"] |
| 649 | else: |
| 650 | return public.returnMsg(False, "未知的数据库类型") |
| 651 | |
| 652 | pgsql_obj = panelPgsql().set_host(host=db_host, port=db_port, database=None, user=db_user, password=db_password) |
| 653 | status, err_msg = pgsql_obj.connect() |
| 654 | if status is False: |
| 655 | return public.returnMsg(False, "连接数据库[{}:{}]失败".format(db_host, int(db_port))) |
| 656 | |
| 657 | db_backup_dir = os.path.join(self._PGSQL_BACKUP_DIR, db_name) |
| 658 | if not os.path.exists(db_backup_dir): |
nothing calls this directly
no test coverage detected