gpt4 book ai didi

postgresql - 在 sqlalchemy 中提交之前运行清理/验证代码

转载 作者:行者123 更新时间:2023-11-29 12:37:19 27 4
gpt4 key购买 nike

我是 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())
...

在提交这份文档之前,我想:

  • 删除电子邮件字段中的所有前导和尾随空格
  • 确保邮政编码是一个 5 位数字字符串(我将为此定义一个正则表达式)
  • 自动查找邮政编码对应的纬度/经度并将其保存在 latlng 字段中。
  • 数据库模式无法执行的其他事情

SQLAlchemy 是否提供了一种简单的方法来提供保证在提交执行此类任意任务之前运行的 Python 代码?

最佳答案

我发现最简单的方法是 Hook 更新和插入事件。 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 类型。

关于postgresql - 在 sqlalchemy 中提交之前运行清理/验证代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28228766/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com