Python ORM である Storm を考慮して、(mysql) データベースのスキーマを自動的に生成したいと考えています。ホームページには次のように記載されています
「Storm は既存のデータベース スキーマとうまく連携します。」( https://storm.canonical.com/FrontPage )、
したがって、モデルクラスを作成する必要がないことを望んでいました。ただし、「入門」チュートリアル ( https://storm.canonical.com/Tutorial ) では、以下のようなクラスをテーブルごとに手動で作成する必要があり、各フィールドを手動で指定する必要があることが示唆されています。
class Person(object):
__storm_table__ = "person"
id = Int(primary=True)
name = Unicode()
あるいは、SQLAlchemy もリバース エンジニアリング機能をサポートしていないようですが、次のようなスキーマが必要です。
user = Table('user', metadata,
Column('user_id', Integer, primary_key = True),
Column('user_name', String(16), nullable = False),
Column('email_address', String(60)),
Column('password', String(20), nullable = False)
)
もちろん、これらのクラス/スキーマは理にかなっています。なぜなら、各テーブルは何らかの「関心のあるオブジェクト」を表す可能性が高く、あらゆる種類の機能でテーブルを拡張できるからです。ただし、それらを作成するのは面倒であり、データベースが既に存在する場合、その (最初の) コンテンツは簡単です。
リバース エンジニアリングを可能にする ORM の 1 つは次のとおりです。
http://docs.doctrine-project.org/en/2.0.x/reference/tools.html
Storm や SQLAlchemy、または python ORM や python database fancyfier用の同様のリバース エンジニアリング ツールはありますか?