-from sqlalchemy.orm import scoped_session, sessionmaker
+from sqlalchemy.orm import scoped_session, sessionmaker, object_session
Session = scoped_session(sessionmaker())
+def _fix_query_dict(query_dict):
+ if '_id' in query_dict:
+ query_dict['id'] = query_dict.pop('_id')
+
+
class GMGTableBase(object):
query = Session.query_property()
@classmethod
def find(cls, query_dict={}):
+ _fix_query_dict(query_dict)
return cls.query.filter_by(**query_dict)
@classmethod
def find_one(cls, query_dict={}):
+ _fix_query_dict(query_dict)
return cls.query.filter_by(**query_dict).first()
+
+ @classmethod
+ def one(cls, query_dict):
+ return cls.find(query_dict).one()
+
+ def get(self, key):
+ return getattr(self, key)
+
+ def save(self, validate = True):
+ assert validate
+ sess = object_session(self)
+ if sess is None:
+ sess = Session()
+ sess.add(self)
+ sess.commit()