>我导入并将继续将数据从不同来源导入sql Server数据库。 一些逻辑检查(例如一列的总和)应与另一个表中的一个金额相差 5 美元。 导入时我很难检查此逻辑,因为有些数据将手动插入,有些数据将使用 Excel VBA 或 python 导入。 数据准确性对我来说非常重要。 我正在考虑在插入数据后进行检查。 我在考虑两个选择
- Python with SqlAlchemy 并用 python 编写逻辑
- 创建存储过程或直接 SQL 进行验证
SQLAlchemy 与用于数据检查的存储过程有什么优缺点?或其他解决方案?
我心目中带有自动映射的SQLAlchemy的好处:
- Jupyter 的可能组合使用以获得漂亮的用户界面
- 逻辑比较容易写,比如循环一个表,每一行应该是另一个表的总和,有一些where条件。
对 SQL 存储过程的好处
- 都可以在 SQL 服务器管理工作室中进行管理
答案是两者都不是。大多数RDBMS都有内置的机制来对插入到行或列中的数据实施限制。正如你所说
导入时我很难检查此逻辑,因为某些数据 将手动插入,有些使用 Excel VBA 或 python 导入。 数据准确性对我来说非常重要
你不能在所有这些地方都有你的代码。有效的是约束。
CHECK 约束通过限制以下值来强制实施域完整性: 被一列或多列接受。您可以创建 CHECK 约束 使用任何返回基于 TRUE 或 FALSE 的逻辑(布尔)表达式 在逻辑运算符上
当然,您可以使用存储过程来实现此目的,但约束更高效、更透明且更易于维护。