-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathbackup_7_days.py
executable file
·80 lines (69 loc) · 1.95 KB
/
backup_7_days.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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
#!/usr/bin/python
import os
import time
import itertools
import psycopg2
from subprocess import call
from boto.s3.connection import S3Connection
from boto.s3.key import Key
from datetime import datetime, timedelta
dbuser = os.environ["DB_USER"]
dbhost = os.environ["DB_HOST"]
dbname = os.environ["DB_NAME"]
dbpass = os.environ["DB_PASS"]
dbtable = os.environ["DB_TABLE"]
params ="host=%s dbname=%s user=%s password=%s" % (dbhost, dbname, dbuser, dbpass)
def delete_data(data):
try:
conn = psycopg2.connect(params)
cursor = conn.cursor()
query = """DELETE FROM EVENTS WHERE EVENTS_ID = %s"""
for line in data:
cursor.execute(query,[line['events_id']])
conn.commit()
cursor.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
else:
print "data removed from database"
finally:
conn.close()
def send_data(filename):
try:
aws_connection = S3Connection(os.environ["AWS_KEY"], os.environ["AWS_SECRET"])
bucket = aws_connection.get_bucket('admssa')
bkt = Key(bucket)
bkt.key = dbtable + filename
bkt.set_contents_from_filename(filename)
except Exception:
print "S3 connection error"
else:
print "data sended"
result = 1
finally:
aws_connection.close()
return result
def get_data():
try:
conn = psycopg2.connect(params)
cursor = conn.cursor()
query = """SELECT * FROM EVENTS WHERE EVENT_DATE >= %s"""
date = datetime.now() - timedelta(days=7)
cursor.execute(query,[date])
desc = cursor.description
column_names = [col[0] for col in desc]
data = [dict(itertools.izip(column_names, row))
for row in cursor.fetchall()]
filename= str(date.date()) + ".data"
file = open(filename, 'w')
for line in data:
file.write(str(line)+"\n")
file.close()
cursor.close()
except (Exception, psycopg2.DatabaseError) as error:
print(error)
finally:
conn.close()
if send_data(filename):
delete_data(data)
get_data()