def create_or_get(cls, **kwargs):
try:
result = (yield cls.create(**kwargs)), True
except IntegrityError:
query = [] # TODO: multi-column unique constraints.
for field_name, value in kwargs.items():
field = getattr(cls, field_name)
if field.unique or field.primary_key:
query.append(field == value)
result = (yield cls.get(*query)), False
raise gen.Return(result)
评论列表
文章目录