我正在尝试用 Python 编写电路原理图绘制工具。我正在创建一个基于字典的简单数据库,其中包含所有组件及其属性。我还尝试创建一种简单的查询语言,您可以在其中选择,例如,所有值 >100ohms 或 footprint='0402' 的电阻器
到目前为止,我可以使用一些原始谓词搜索来选择事物,然后对更复杂的事物进行并集和交集。
但是,我无法定义纯否定搜索的语义应该是什么。例如,像
足迹 != '0402'
应该选择足迹不等于 0402 的所有项目。但是仅使用交集执行此操作会给我一个空白结果。为此,我需要选择所有组件,然后与“not 0402”相交以删除我不需要的组件。
但这似乎有点蛮力,而且似乎是一个可疑的解决方案。我对使用“真正的”数据库和查询语言不感兴趣,所以请不要建议。我在这里寻找适当的工程原理,不一定是解决问题的方法。
这个问题在某种程度上在 SICP 书中有所涉及,但我感到非常困惑,因为我认为他们也在使用延续和其他东西,但我还不明白。
有人可以解释一下“正确”的用法应该是什么来否定选择东西。我在商业 cad 工具中尝试了这个,它按预期工作,但后来我看到了一些 SQL 查询示例(我认为),它们首先选择了东西,然后删除了不需要的东西。
谢谢
迈克尔
最佳答案
有了合适的数据库,您会开心很多。
您的 Python 发行版中有 SQLite。只需定义表而不是字典并使用 SQL。
如果您需要更强大和更复杂的功能,可以添加 SQLAlchemy (或 SQLObject),您将不会为这些问题而苦恼。
关于python - 在 python 中选择简单数据库中的项目时需要帮助,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/399957/