宣言型 SQLAlchemy の興味深い使用例があります。それぞれ数百の列を持つ約 10 個の異なる sqlalchemy クラスを定義する必要があります。ただし、これらのオブジェクトは基本的にデータの「チャネル」の配列を格納するため、列には次の名前が付けられます。
channel_51, channel_52 ... channel_272, channel_273
宣言されたクラスを含む巨大なファイルを維持できますが、各クラスは常に channel_n から channel_m までの形式になります。これを 300 行ではなく、クラスごとに数行のコードにする方法はありますか? 課題は、関数から見えるようにするために最上位で定義する必要があり、metadata.create_all()
初期化中にクラスに追加できないことです。次と同等のものが欲しい:
for i in range(n,m):
setattr(self, 'channel_%d' %i, Column(sqlalchemy.types.Float))
クラスのトップレベルで動作する必要があることを除いて