SQLAlchemyのデータベースの反射がそこに半分の方法を取得します。あなたはまだそれらの間のクラスと関係を宣言しなければなりません。実際にはクラスも簡単に自動生成できますが、関係を何らかの形で名前を付ける必要があるため、クラスを手動で宣言することもできます。
セットアップにコードデータベースは次のようになります:
from sqlalchemy import create_engine, MetaData
from sqlalchemy.ext.declarative import declarative_base
metadata = MetaData(create_engine(database_url), reflect=True)
Base = declarative_base(metadata)
class Order(Base):
__table__ = metadata.tables['orders']
class OrderLine(Base):
__table__ = metadata.tables['orderlines']
order = relation(Order, backref='lines')
生産コードでは、おそらく何らかの形で反映データベースのメタデータをキャッシュしたいと思います。例えば、それをファイルに漬けます:
from cPickle import dump, load
import os
if os.path.exists('metadata.cache'):
metadata = load(open('metadata.cache'))
metadata.bind = create_engine(database_url)
else:
metadata = MetaData(create_engine(database_url), reflect=True)
dump(metadata, open('metadata.cache', 'w'))
実は、entitlyフレームワークはNHibernateのように '面倒な' XMLを使用しています。これはVisual Studioによって自動化されたことだけです。したがって、ORMよりも似た機能を持つIDEを探しているようです。 – UpTheCreek