def get_or_create(self, session, model, **kwargs):
try:
query = session.query(model).filter_by(**kwargs)
instance = query.first()
if instance:
return instance, False
else:
try:
params = dict((k, v) for k, v in kwargs.iteritems() if not isinstance(v, ClauseElement))
instance = model(**params)
session.add(instance)
session.commit()
session.refresh(instance)
return instance, True
except IntegrityError as e:
# We have failed to add track, rollback current session and continue
session.rollback()
print "[-]Failed to add, continuing"
except Exception as e:
raise e
评论列表
文章目录