2011-03-15 92 views
0

我一年前在PHP中开发了一个Web平台,而且我为自己写的数据访问层感到很自豪。从那以后,我开始重复使用同样的概念。但现在我正在考虑将其提升到下一个级别,而不是重写整个数据库访问代码,我希望创建一个工具来分析我的SQL模式并自行生成DAL类。php 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,或者可能是一些第三方库,我可以用它来解析一些让我定义我的架构的格式,如上所述? 我不想重新发明轮子,而且我对编写我自己的解析器并不感兴趣,我只想尽快获得一个基本的工作工具。

感谢

回答

1

的immitiate想到的可能是简单地使用常规的Python语法来定义你的表:

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

等。

您可以但是看看how django does it:你定义一个类和属性添加到该类,然后将代表你的模型。这个模型可以用来生成SQL语句,并且也是有效的 - 并且可以轻松扩展 - Python代码。

其他建议可能是使用JSON结构来表示数据,然后编写一些代码来解析该数据。这与使用现有的python语法类似,但在其他语言中解析会更容易(上面给出的示例几乎可以使用现成的JSON语法(替换为“with”)。

+0

Man ... I不能相信JSON没有跳到我脑海,你完全正确!谢谢 – CoolStraw 2011-03-15 15:01:41