在SqlAlchemy @validates装饰器中返回自定义消息

时间:2012-09-28 15:37:59

标签: python json exception-handling sqlalchemy

我对SQLAlchemy来说比较新。

我使用sqlalchemy装饰器进行了一个非常简单的model自定义@validates函数:

class User(db.Model):
  ...
  email = db.Column(db.String(255)) # don't worry about uniqueness for now

  @validates('email')
  def validate_email(self, key, address):
    assert '@' in address # of course a regex is better, I know
    return address

然后再说:

try:
  user = User('fidel#cuba.cu')
  db.session.add(user)
  db.session.commit()
except Exception as e:
  print e.message # returns an empty string ''

我想做什么:

...
except Exception as e:
  # json_error is a custom function of my own 
  return json_error(e.message, 400) 

所以问题是: 如何将自定义错误消息附加到SQLAlchemy中的自定义验证规则? 也许我需要创建一个带有消息的自定义Exception?

1 个答案:

答案 0 :(得分:4)

断言可以采用第二个参数 - 如果断言失败则使用的消息:

class User(db.Model):
  # ... snip ...

  @validates('email')
  def validate_email(self, key, address):
    assert '@' in address, "Invalid email"
    return address