我正在尝试用Python编写电路原理图绘制工具.我正在创建一个基于字典的简单数据库,它包含所有组件及其属性.我还试图创建一种简单的查询语言,您可以选择,例如,所有电阻值> 100欧姆或足迹='0402'
到目前为止,我可以使用一些原始谓词搜索选择事物,然后使用联合和交集来处理更复杂的事情.
但是,我很难定义纯粹否定搜索的语义应该是什么.例如,像
足迹!='0402'
应该选择占地面积不等于0402的所有项目.但仅使用交叉点进行此操作会给我一个空白结果.为此,我需要选择所有组件,然后与"not 0402"相交以删除我不想要的组件.
但这似乎是一种蛮力,似乎是一种可疑的解决方案.我对使用"真正的"数据库和查询语言不感兴趣,所以请不要这么做.我在这里寻找合适的工程原理,不一定是解决问题的方法.
这个问题在SICP的书中得到了一定程度的介绍,但我很困惑,因为我认为他们也在使用延续和东西,我还没有.
有人可以解释一下"正确"用法应该是什么,以消极地选择东西.我在商业CAD工具想这和它的工作如预期,但我已经看到了一些SQL查询的例子(我认为),它选择的事情第一,然后删除不需要的人.
谢谢
迈克尔
使用合适的数据库会让您更开心.
你的Python发行版有SQLite.只需定义表而不是字典并使用SQL.
如果您需要更多的功能和复杂性,可以添加SQLAlchemy(或SQLObject),您将不会遇到这些问题.