我对PostGreSQL和SQLAlchemy完全陌生,我试图弄清楚如何在SQLAlchemy模型提交到数据库之前运行验证/清理代码。我们的想法是确保数据一致性超出SQL数据库中内置的标准类型实施。例如,如果我在SQLAlchemy的模型上建立了User
模型,
class User(db.Model):
...
email = db.Column(db.String())
zipCode = db.Column(db.String())
lat = db.Column(db.Float())
lng = db.Column(db.Float())
...
在提交本文档之前,我想:
lat
& lng
字段。SQLAlchemy是否提供了一种简单的方法来提供保证在承诺执行任意任务之前运行的Python代码?
答案 0 :(得分:4)
我发现最简单的方法是挂钩更新并插入事件。 http://docs.sqlalchemy.org/en/latest/orm/events.html
from sqlalchemy import event
def my_before_insert_listener(mapper, connection, target):
target.email=target.email.trim()
#All the other stuff
# associate the listener function with User,
# to execute during the "before_insert" hook
event.listen(
User, 'before_insert', my_before_insert_listener)
您可以创建执行此类操作的自定义sqlalchemy类型。