【发布时间】:2021-06-02 07:42:25
【问题描述】:
说表结构是这样的:
CREATE TABLE foo (
id INTEGER NOT NULL,
enter_time TIMESTAMP NOT NULL,
comment TEXT
);
现在在 python 中,假设我得到这样的数据:
foo_user = {"id": 123, "enter_time": None, "comment": ''}
如何在发送到 pgsql 之前手动验证这些数据?
是否有任何库已经通过从 pgsql 中提取架构信息并对其进行验证来做到这一点?
【问题讨论】:
-
从 INSERT 语句中捕获可能的异常有什么问题?
-
@Sebastian 所以基本上我无法控制将消息发送到 msg 总线然后发送到 db 的库,因此在移交数据之前验证数据非常重要,抱歉我没有没提过
-
您可以使用任何验证库,例如
marshmallow或pydantic。 -
那么,创建表 foo
create table foo_shadow (like foo including constraints)的影子,并在调用库代码之前尝试将其插入(开始 - 插入 - 回滚,当然是寻找异常)。 -
@Stefanov.sm 是的,这是一种方法,但是有很多表超过 300 .. 我在想是否有办法从 pgsql 中提取模式并针对它进行验证
标签: python python-3.x database postgresql validation