我需要将基本功能的源代码存储在数据库中,并允许通过管理界面对其进行修改。这段代码将几个数字和字符串作为参数,并返回一个数字或None。我知道 eval 是邪恶的,所以我需要实现一种安全的方式来执行 Python 的一个非常基本的子集,或者至少在基于 Python 的 Web 应用程序中在语法上类似的东西。
显而易见的答案是实现 DSL(域特定语言),但是,我没有这方面的经验,也不知道从哪里开始,而且很多可用资源似乎有点超出我的想象。我希望也许已经有一些东西可以让我从数据库中的字符串基本上生成一个安全的 python 可调用函数。该语言实际上只需要支持赋值、基本数学、if/else 和不区分大小写的字符串比较。任何其他功能都是额外的,但我认为大多数事情都可以做到这一点,不需要复杂的数据结构、类、函数等。
如果目前不存在这样的东西,我愿意研究创建一个的可能性,但正如我所说,我不知道如何去做,在这方面的任何建议也将不胜感激。