使用 Python SqlAlchemy 或 Sql Query 进行数据库数据完整性检查



>我导入并将继续将数据从不同来源导入sql Server数据库。 一些逻辑检查(例如一列的总和)应与另一个表中的一个金额相差 5 美元。 导入时我很难检查此逻辑,因为有些数据将手动插入,有些数据将使用 Excel VBA 或 python 导入。 数据准确性对我来说非常重要。 我正在考虑在插入数据后进行检查。 我在考虑两个选择

  1. Python with SqlAlchemy 并用 python 编写逻辑
  2. 创建存储过程或直接 SQL 进行验证

SQLAlchemy 与用于数据检查的存储过程有什么优缺点?或其他解决方案?

我心目中带有自动映射的SQLAlchemy的好处:

  1. Jupyter 的可能组合使用以获得漂亮的用户界面
  2. 逻辑比较容易写,比如循环一个表,每一行应该是另一个表的总和,有一些where条件。

对 SQL 存储过程的好处

  1. 都可以在 SQL 服务器管理工作室中进行管理

答案是两者都不是。大多数RDBMS都有内置的机制来对插入到行或列中的数据实施限制。正如你所说

导入时我很难检查此逻辑,因为某些数据 将手动插入,有些使用 Excel VBA 或 python 导入。 数据准确性对我来说非常重要

你不能在所有这些地方都有你的代码。有效的是约束。

CHECK 约束通过限制以下值来强制实施域完整性: 被一列或多列接受。您可以创建 CHECK 约束 使用任何返回基于 TRUE 或 FALSE 的逻辑(布尔)表达式 在逻辑运算符上

当然,您可以使用存储过程来实现此目的,但约束更高效、更透明且更易于维护。

最新更新