|
|
- from sqlalchemy import create_engine
- from sqlalchemy.ext.declarative import declarative_base
- from sqlalchemy.orm import sessionmaker, scoped_session
- from sqlalchemy.sql import ClauseElement
-
- DB_URI = 'sqlite:///stuff.db'
-
- db_endine = create_engine(DB_URI)
-
- session = scoped_session(
- sessionmaker(
- autocommit=False,
- autoflush=False,
- bind=db_endine
- )
- )
-
- Model = declarative_base()
-
-
- def get_or_create(session, model, defaults=None, **kwargs):
- instance = session.query(model).filter_by(**kwargs).first()
- if instance:
- return instance, False
- else:
- params = dict((k, v) for k, v in kwargs.items() if not isinstance(v, ClauseElement))
- params.update(defaults or {})
- instance = model(**params)
- session.add(instance)
- session.commit()
- return instance, True
-
-
-
-
-
-
|