openmedialibrary/oml/db.py

43 lines
1.1 KiB
Python
Raw Normal View History

2014-08-09 15:03:16 +00:00
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker
2014-05-04 17:26:43 +00:00
from sqlalchemy.ext.mutable import Mutable
2014-08-09 15:03:16 +00:00
from sqlalchemy.ext.declarative import declarative_base
import settings
engine = create_engine('sqlite:////%s' % settings.db_path)
Session = sessionmaker(bind=engine)
# create a Session
session = Session()
Model = declarative_base()
2014-05-04 17:26:43 +00:00
class MutableDict(Mutable, dict):
@classmethod
def coerce(cls, key, value):
"Convert plain dictionaries to MutableDict."
if not isinstance(value, MutableDict):
if isinstance(value, dict):
return MutableDict(value)
# this call will raise ValueError
return Mutable.coerce(key, value)
else:
return value
def __setitem__(self, key, value):
"Detect dictionary set events and emit change events."
dict.__setitem__(self, key, value)
self.changed()
def __delitem__(self, key):
"Detect dictionary del events and emit change events."
dict.__delitem__(self, key)
self.changed()