def restore_database(files_base, site_config_path, site): # restore database database_file = files_base + '-database.sql.gz' decompress_db(database_file, site) config = get_config() # Set db_type if it exists in backup site_config.json set_key_in_site_config('db_type', site, site_config_path) # Set db_host if it exists in backup site_config.json set_key_in_site_config('db_host', site, site_config_path) # Set db_port if it exists in backup site_config.json set_key_in_site_config('db_port', site, site_config_path) # get updated site_config site_config = get_site_config(site) # if no db_type exists, default to mariadb db_type = site_config.get('db_type', 'mariadb') is_database_restored = False if db_type == 'mariadb': restore_mariadb(config=config, site_config=site_config, database_file=database_file) is_database_restored = True elif db_type == 'postgres': restore_postgres(config=config, site_config=site_config, database_file=database_file) is_database_restored = True if is_database_restored: # Set encryption_key if it exists in backup site_config.json set_key_in_site_config('encryption_key', site, site_config_path)
def main(): config = get_config() db_type = 'mariadb' db_port = config.get('db_port', 3306) db_host = config.get('db_host') site_name = os.environ.get("SITE_NAME", 'site1.localhost') db_root_username = os.environ.get("DB_ROOT_USER", 'root') mariadb_root_password = get_password("MYSQL_ROOT_PASSWORD", 'admin') postgres_root_password = get_password("POSTGRES_PASSWORD") db_root_password = mariadb_root_password if postgres_root_password: db_type = 'postgres' db_host = os.environ.get("POSTGRES_HOST") db_port = 5432 db_root_password = postgres_root_password if not db_host: db_host = config.get('db_host') print('Environment variable POSTGRES_HOST not found.') print('Using db_host from common_site_config.json') sites_path = os.getcwd() common_site_config_path = os.path.join(sites_path, COMMON_SITE_CONFIG_FILE) update_site_config("root_login", db_root_username, validate=False, site_config_path=common_site_config_path) update_site_config("root_password", db_root_password, validate=False, site_config_path=common_site_config_path) force = True if os.environ.get("FORCE", None) else False install_apps = os.environ.get("INSTALL_APPS", None) install_apps = install_apps.split(',') if install_apps else [] frappe.init(site_name, new_site=True) if semantic_version.Version(frappe.__version__).major > 11: _new_site( None, site_name, mariadb_root_username=db_root_username, mariadb_root_password=db_root_password, admin_password=get_password("ADMIN_PASSWORD", 'admin'), verbose=True, install_apps=install_apps, source_sql=None, force=force, db_type=db_type, reinstall=False, db_host=db_host, db_port=db_port, ) else: _new_site( None, site_name, mariadb_root_username=db_root_username, mariadb_root_password=db_root_password, admin_password=get_password("ADMIN_PASSWORD", 'admin'), verbose=True, install_apps=install_apps, source_sql=None, force=force, reinstall=False, ) if db_type == "mariadb": site_config = get_site_config(site_name) db_name = site_config.get('db_name') db_password = site_config.get('db_password') mysql_command = [ "mysql", f"-h{db_host}", f"-u{db_root_username}", f"-p{mariadb_root_password}", "-e" ] # Drop User if exists command = mysql_command + [ f"DROP USER IF EXISTS '{db_name}'; FLUSH PRIVILEGES;" ] run_command(command) # Grant permission to database and set password grant_privileges = "ALL PRIVILEGES" # for Amazon RDS if config.get(RDS_DB) or site_config.get(RDS_DB): grant_privileges = RDS_PRIVILEGES command = mysql_command + [ f"\ CREATE USER IF NOT EXISTS '{db_name}'@'%' IDENTIFIED BY '{db_password}'; \ GRANT {grant_privileges} ON `{db_name}`.* TO '{db_name}'@'%'; \ FLUSH PRIVILEGES;" ] run_command(command) if frappe.redis_server: frappe.redis_server.connection_pool.disconnect() exit(0)
for i in range(len(values)): value = values[i] if "@value" in value: text += value["@value"] else: text += value["@id"] if i != len(values) - 1: # 複数ある場合にはパイプでつなぐ text += "|" row.append(unicodedata.normalize("NFKC", text)) media_num = len(obj["o:media"]) row.append(media_num) media_sum += media_num row1.append("# of media") row2.append(media_sum) df = pd.DataFrame(table) df.to_excel(output_path, index=False, header=False) df.to_csv(output_path.replace("xlsx", "csv"), index=False, header=False) # df.to_csv(output_path.replace("xlsx", "tsv"), index=False, header=False, sep='\t') if __name__ == "__main__": args = parse_args() key = args.site_name site_obj = utils.get_site_config(key) excel_generator(site_obj)