def get_or_create(session, model, defaults=None, **kwargs):
"""
:param Session session:
:param model:
:param defaults:
:param kwargs:
:return:
"""
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)
return instance, True
评论列表
文章目录