sql >> データベース >  >> RDS >> Mysql

slqlalchemy UniqueConstraint VS Index(unique =True)

    主な違いは、インデックス 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'))
    



    1. Mysqlテーブル名が大文字で機能しない

    2. Windowsでxamppのコマンドラインにアクセスする方法

    3. SQLiteException:テーブルはすでに存在します

    4. Mysqlエラー1005(HY000):テーブル'tmp'を作成できません(errno:13)