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
79
80
81
82
83
84
85
86
87
88
89
90
|
"""Db bass class for updating the photoblaster database"""
import time
import sys
from photoblaster.db.imcmd import ImCmd
from photoblaster.config import DB_USER, DB_PASSWORD, DB_HOST,\
DB_NAME
from sqlalchemy import Column, Integer, LargeBinary, String, \
create_engine, sql, func, desc
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
_NULL = sql.null()
Base = declarative_base()
metadata = Base.metadata
class Db(object):
"""wrapper for all db methods"""
def __init__(self):
engine = create_engine('mysql://{}:{}@{}/{}'.format(
DB_USER,
DB_PASSWORD,
DB_HOST,
DB_NAME
))
self.Session = sessionmaker(bind=engine)
def _get(
self,
columns=None,
filter_by={},
order_by=None,
offset=0,
limit=20,
not_deleted=False
):
session = self.Session()
results = session.query(ImCmd)
if not_deleted:
filter_by['deleted'] = 0
if filter_by:
results = results.filter_by(filter_by)
if order_by is not None:
results = results.order_by(order_by)
results = results.offset(offset).limit(limit)
session.close()
return [result.serialize(columns=columns) for result in results]
def get_random(
self, filter_by={},
offset=0, limit=20, columns=None
):
return self._get(
columns=columns, order_by=func.random(),
offset=offset, limit=limit)
def get_by_date(
self,
filter_by={},
offset=0, limit=20, columns=None
):
return self._get(
columns=columns, offset=offset, limit=limit,
order_by=desc(
ImCmd.date
)
)
def insert_cmd(self, **kwargs):
try:
session = self.Session()
_entry_data = {
'date': kwargs.get("date", int(time.time())),
'remote_addr': kwargs['remote_addr'] or _NULL,
'name': kwargs['username'] or _NULL,
'url': kwargs['username'] or _NULL,
'dir': kwargs['directory'] or _NULL,
'oldfile': kwargs['oldfile'] or _NULL,
'newfile': kwargs['newfile'] or _NULL,
'cmd': kwargs['cmd'] or _NULL,
'dataobj': kwargs['dataobj'] or _NULL,
'tag': kwargs['tag'] or _NULL
}
session.add(ImCmd(**_entry_data))
session.commit()
session.close()
except Exception as e:
sys.stderr.write("Unable to commit database entry\n")
sys.stderr.write(str(e))
|