我正在编写一个Python脚本,它使用质量可疑的数据。数据存储在SQLite数据库中。在
我想要一个紧凑的方式来指定数据的约束。约束有两种类型:
理想情况下,我希望以人类可读的格式表达我的约束,例如:
'kV' MUST BE float IN RANGE 0-10
'Rating' SHOULD NOT BE DEFAULT 1.0
'Description' SHOULD NOT BE DEFAULT ""
。。。但我会对我目前的方法做任何改进(如下)。我很乐意接受一个解决方案,它涉及在Python或SQLite模式中强制约束。在
我现在使用的是:
^{pr2}$输出示例:
kV = 11.0 : OK
kA1 = 1.0 : OK
kA1 = 1.0 : default value of 1.0 - make sure this is what you want.
编辑:我知道在Python中显式检查类型是不礼貌的。但是,为了使用数据的代码,我需要检查SQLite是否在列中存储了意外的东西(“hello world”在INT列中,等等)。记住数据的质量是可疑的,SQLite会很乐意将任何类型的数据放在任何列中。捕捉这些类型的数据输入错误是本代码的目标之一。在
如果您愿意使用稍微复杂一点的实现,可以使用字典:
规范可以是:
结合@onedaywhen使用SQL检查约束的思想和@ABS以更易读的方式定义约束的思想,我得出了如下结论。在
把它包装在一个类中可能不是特别有用(在这个例子中,它是
check()
函数的一个华丽的包装器),但这意味着我可以在以后将一些稍微好一点的输出格式放入其中。在以下条款可能会引起注意:
Verbalizing Business Rules by Terry Halpin
从SQL的角度来看,编写一个查询来返回违反规则的数据,例如
然后测试每个规则是否为空集。注意使它们细化,例如分别对}分别进行测试。在
Column_A < 0
和{相关问题 更多 >
编程相关推荐