-
Notifications
You must be signed in to change notification settings - Fork 0
/
db_backup.py
47 lines (40 loc) · 1.49 KB
/
db_backup.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import json
from db_connection import Connection
class BackupData(Connection):
def __init__(self, db_login, db_password, table_name, backup_file):
super().__init__(db_login, db_password)
self.table_name = table_name
self.backup_file = backup_file
def backup_handler(self):
old_data = None
try:
sql_data = self.pull_table(self.table_name)
except:
print(
"Unable to load the SQL table.\nCheck that the table name provided exists."
)
else:
try:
old_data = self.load_file(self.backup_file)
except:
print("The backup file does not exist.\nSkipping loading old Data.")
finally:
output_data = [[str(a) for a in i] for i in sql_data]
self.constructor(self.backup_file, output_data)
return old_data
def pull_table(self, table_name):
data = []
query = f"SELECT * FROM {table_name}"
with self.cursor.execute(query):
row = self.cursor.fetchone()
while row:
data.append(row)
row = self.cursor.fetchone()
return data
def load_file(self, file):
with open(file, "r") as file_data:
data = json.load(file_data)
return data
def constructor(self, file, export_data):
with open(file, "w") as file_data:
json.dump(export_data, file_data, indent=4, sort_keys=True)