Mysql
 sql >> Baza danych >  >> RDS >> Mysql

slqlalchemy UniqueConstraint VS Index (unique=True)

Główna różnica polega na tym, że podczas gdy Indeks API umożliwia zdefiniowanie indeksu poza definicją tabeli, o ile może odwoływać się do tabeli poprzez przekazane konstrukcje SQL, a UniqueConstraint i ogólnie ograniczenia musi być zdefiniowany w definicji tabeli :

Należy zrozumieć, że podczas konstruowania klasy deklaratywnej nowa Tabela jest skonstruowany, jeśli nie zostanie przekazany jawny __table__ . W przykładowej klasie modelu UniqueConstraint instancja jest powiązana z atrybutem klasy, ale podstawa deklaratywna nie zawiera ograniczeń w tworzonej tabeli wystąpienie z atrybutów. Musisz go podać w argumentach tabeli:

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

Zauważ, że musisz przekazać nazwę ograniczenia jako argument słowa kluczowego. Możesz również przekazać ograniczenie za pomocą Table.append_constraint() , jeśli zostanie wywołane przed jakąkolwiek próbą utworzenia tabeli:

class MyTable(DeclBase):
    ...

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



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. tylko dane mysqldump

  2. Najlepszy sposób na przechowywanie ZESTAWU większego niż 64

  3. Przewodnik po projektowaniu bazy danych dla biuletynu w MySQL

  4. Dynamiczna instrukcja SQL SELECT z PHP w oparciu o opcje użytkownika

  5. Wstaw rekordy do bazy danych mysql za pomocą php za pomocą Ajax