2011-03-15 87 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