主な違いは、インデックスコード> API
渡されたSQL構造を介してテーブルを参照できる限り、テーブル定義の外部でインデックスを定義できます。 UniqueConstraint
および一般的な制約
理解しておくべきことは、宣言型クラスの構築中に、新しい Table
明示的な__table __
が渡されない場合は、構築されます 。サンプルモデルクラスでは、 UniqueConstraint
インスタンスはクラス属性にバインドされていますが、宣言型ベースには、作成された Table
に制約が含まれていません 属性からのインスタンス。テーブル引数に渡す必要があります:
class MyTable(DeclBase):
__tablename__ = 'my_table'
...
# A positional argument tuple, passed to Table constructor
__table_args__ = (
UniqueConstraint(attr_2, attr_3, name='my_table_uidx'),
)
制約名をキーワード引数として渡す必要があることに注意してください。 Table.append_constraint()
、テーブルを作成する前に呼び出された場合:
class MyTable(DeclBase):
...
MyTable.__table__.append_constraint(
UniqueConstraint('attr_2', 'attr_3', name='my_table_uidx'))