Чтобы выполнить резервное копирование PostgreSQL с помощью Python, существует несколько методов. Вот несколько часто используемых подходов:
-
Использование утилиты
pg_dump:
Вы можете запустить утилитуpg_dumpиз вашего скрипта Python с помощьюподпроцессамодуль. Эта утилита позволяет создать логическую резервную копию вашей базы данных PostgreSQL.import subprocess def backup_postgresql(host, port, username, password, database, output_file): command = f'pg_dump -h {host} -p {port} -U {username} -W -F c -b -v -f {output_file} {database}' subprocess.call(command, shell=True) # Example usage backup_postgresql('localhost', '5432', 'myuser', 'mypassword', 'mydatabase', 'backup.dump') -
Использование библиотеки
psycopg2.
Библиотекаpsycopg2— это популярный адаптер PostgreSQL для Python. Вы можете использовать его, чтобы установить соединение с вашей базой данных и выполнить резервное копирование, выполнив запрос SQL.import psycopg2 def backup_postgresql(host, port, username, password, database, output_file): conn = psycopg2.connect(host=host, port=port, user=username, password=password, database=database) cursor = conn.cursor() with open(output_file, 'wb') as f: cursor.copy_expert(f"COPY (SELECT * FROM {database}) TO STDOUT WITH BINARY", f) cursor.close() conn.close() # Example usage backup_postgresql('localhost', '5432', 'myuser', 'mypassword', 'mydatabase', 'backup.dump') -
Использование библиотеки
pg8000.
Библиотекаpg8000— это еще один адаптер PostgreSQL для Python, который предоставляет интерфейс чистого Python для взаимодействия с базой данных. Вы можете использовать его для резервного копирования.import pg8000 def backup_postgresql(host, port, username, password, database, output_file): conn = pg8000.connect(host=host, port=port, user=username, password=password, database=database) cursor = conn.cursor() with open(output_file, 'wb') as f: cursor.copy_to(f, f"SELECT * FROM {database}") cursor.close() conn.close() # Example usage backup_postgresql('localhost', '5432', 'myuser', 'mypassword', 'mydatabase', 'backup.dump')