0

一年前我用 PHP 开发了一个 Web 平台,我为我为它编写的数据访问层感到有点自豪。从那时起,我开始一遍又一遍地重复使用相同的概念。但现在我想把它提升到一个新的水平,而不是重写整个数据库访问代码,我想创建一个工具来解析我的 SQL 模式并自行生成 DAL 类。

从 SQL 模式中生成代码所需的信息是:

* Tables
* Fields
* Fields types
* Foreign keys

事实上,我查找了一些 SQL 解析器并找到了一些东西,但我最终决定以不同的方式执行此操作。我不是从 SQL 模式本身生成代码,而是从我根据数据库真实模式创建的元数据生成它。

我想到了类似的东西:

TableName[
   FieldA : Type;
   FieldB:  Type;
]
TableName2[
   FieldA : Type, FK(TableName.FieldA);
   FieldZ:  Type;
]

这根本不是一个规范,它只是一个快速思考的结果,说明了我想要实现什么样的东西。

现在的问题是:python 是否有一些内置的 API,或者我可以使用一些 3rd 方库来解析一些格式,让我如上所述定义我的模式?我不想重新发明轮子,而且我对编写自己的解析器一点也不感兴趣,我想要的只是尽快获得一个基本的可用工具。

谢谢

4

1 回答 1

1

模仿的想法是简单地使用常规的 python 语法来定义你的表:

{
    'TableName': {'FieldA': ['Type', FK(..)], 'FieldB': ['type']}
}

等等。

但是,您可以看看django 是如何做到的:您定义一个类并向该类添加属性,然后它将代表您的模型。然后可以使用此模型生成 SQL 语句,并且也是有效的 - 并且易于扩展的 - Python 代码。

其他建议可能是使用 JSON 结构来表示您的数据,然后编写一些代码来解析该数据。这类似于使用现有的 python 语法,但更容易用其他语言解析(上面给出的示例几乎是开箱即用的有效 JSON 语法(将 ' 替换为 ")。

于 2011-03-15T14:56:19.337 回答