0

私は1年前に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がありますか、それとも上記のようにスキーマを定義できる形式を解析するために使用できるサードパーティのライブラリがありますか?私は車輪の再発明をしたくありません、そして私は自分のパーサーを書くことに全く興味がありません、私が欲しいのは基本的で実用的なツールをできるだけ早く手に入れることです。

ありがとう

4

1 に答える 1

1

すぐに考えられるのは、通常のPython構文を使用してテーブルを定義することです。

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

等々。

ただし、djangoがどのように機能するかを確認することはできます。クラスを定義し、そのクラスにプロパティを追加すると、モデルが表現されます。このモデルは、SQLステートメントを生成するために使用でき、Pythonコードでも有効です(簡単に拡張できます)。

他の提案としては、JSON構造を使用してデータを表現し、そのコードを解析するためのコードを作成することが考えられます。これは、既存のpython構文を使用する場合と似ていますが、他の言語で解析する方が簡単です(上記の例は、箱から出してすぐに使用できるほぼ有効なJSON構文です('を"に置き換えます)。

于 2011-03-15T14:56:19.337 に答える