Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

slqlalchemy UniqueConstraint VS Index (unique =True)

Sự khác biệt chính là trong khi Chỉ mục API cho phép xác định chỉ mục bên ngoài định nghĩa bảng miễn là nó có thể tham chiếu bảng thông qua các cấu trúc SQL được truyền vào, UniqueConstraint và các ràng buộc nói chung phải được xác định nội tuyến trong định nghĩa bảng :

Điều cần hiểu là trong quá trình xây dựng một lớp khai báo, một Bảng mới được xây dựng, nếu không được thông qua một __table__ rõ ràng . Trong lớp mô hình mẫu của bạn, UniqueConstraint thể hiện được liên kết với một thuộc tính lớp, nhưng cơ sở khai báo không bao gồm các ràng buộc trong Bảng đã tạo ví dụ từ các thuộc tính. Bạn phải chuyển nó vào các đối số của bảng:

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

Lưu ý rằng bạn phải chuyển tên ràng buộc làm đối số từ khóa. Bạn cũng có thể vượt qua ràng buộc bằng cách sử dụng Table.append_constraint () , nếu được gọi trước bất kỳ nỗ lực tạo bảng nào:

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. Thực hiện nhiều CẬP NHẬT trong một truy vấn SQL bằng PHP

  2. xác thực biểu mẫu ajax với mysqli_query

  3. truy vấn mysql để so khớp câu với từ khóa trong một trường

  4. Lược đồ xuất MySql không có dữ liệu

  5. node-mysql:Nhiều truy vấn câu lệnh, ER_PARSE_ERROR