sql >> Database >  >> RDS >> Mysql

slqlalchemy UniqueConstraint VS Index (uniek =True)

Het belangrijkste verschil is dat terwijl de Index API staat het definiëren van een index toe buiten een tabeldefinitie zolang deze naar de tabel kan verwijzen via de doorgegeven SQL-constructies, a UniqueConstraint en beperkingen in het algemeen moet inline worden gedefinieerd in de tabeldefinitie :

Het ding om te begrijpen is dat tijdens de constructie van een declaratieve klasse een nieuwe Table is geconstrueerd, indien niet een expliciete __table__ . doorgegeven . In uw voorbeeldmodelklasse is de UniqueConstraint instantie is gebonden aan een klassekenmerk, maar de declaratieve basis bevat geen beperkingen in de gemaakte Table instantie van attributen. U moet het doorgeven in de tabelargumenten:

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'),
    )

Houd er rekening mee dat u de naam van de beperking moet doorgeven als een trefwoordargument. U kunt de beperking ook doorgeven met Table.append_constraint() , indien aangeroepen vóór pogingen om de tabel aan te maken:

class MyTable(DeclBase):
    ...

MyTable.__table__.append_constraint(
    UniqueConstraint('attr_2', 'attr_3', name='my_table_uidx'))



  1. ORA-01264:Kan de bestandsnaam van het logbestand niet maken

  2. Identiteitstoename springt in SQL Server-database

  3. Hoe PHP te gebruiken om verbinding te maken met de sql-server

  4. SQL DROP-KOLOM voor beginners