8

と呼ばれるトップクラスParametricは、パラメータを関連付けることができるオブジェクトを作成するために使用されます。

class Parametric(object):
 def __init__(self, name):
  self.name = name
  self.pars = []

class Foo(Parametric):
 def __init__(self, name, prop):
  self.prop = prop
  Parametric.__init__(self, name)

class Bar(Parametric):
 def __init__(self, name, prop):
  self.prop = prop
  Parametric.__init__(self, name)

ORMエンジンにSQLAlchemyを使用しています。

組み合わせ( 、 )が特定のクラスに対して一意でUNIQUEあることを保証する制約を課したいのですが(たとえば、の1つのインスタンスのみを呼び出して、値をとることができます)、から列を参照する方法がわかりません。テーブルセクションで。namepropFoo"my_foo"prop"my_prop"nameParametricFooUNIQUECONSTRAINT

FOREIGN KEYこの独自性は、ディレクティブを介して課すことができるものですか?

4

2 に答える 2

3

これは、単一テーブルの継承を使用して行うことができます。ただし、2 つの列が異なるテーブルにある場合、実行しようとしていることを正確に行うことはできません (テーブル間で一意の制約を行うことはできません)。

単一テーブルの継承がオプションでない場合は、おそらく (1) Python で一意性を強制するか、(2) sqlalchemy の継承を放棄し、外部キーを使用して Foo と Bar を Parametric にリンクすることをお勧めします。への外部キーを作成しname、 および に対して一意の制約を実行nameできpropます。

于 2011-09-19T19:51:24.567 に答える