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

SQLAlchemy DELETE Lỗi gây ra do có cả lười tải VÀ phiên bản động của cùng một mối quan hệ

cả mối quan hệ Group.users và Group.users_dynamic đều đang cố gắng điều hòa thực tế rằng Nhóm đang bị xóa cùng với việc có thể quản lý User() đối tượng mà chúng đề cập đến; một mối quan hệ thành công trong khi mối quan hệ thứ hai không thành công, vì các hàng trong bảng liên kết đã bị xóa. Giải pháp đơn giản nhất là đánh dấu tất cả trừ một trong các mối quan hệ giống hệt nhau là chỉ xem:

class Group(Base):
    __tablename__ = 'groups'
    id = Column(Integer, primary_key=True)

    users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
    users_dynamic = relationship('User', viewonly=True, secondary=users_groups, lazy='dynamic')

nếu bạn vẫn muốn có cả hai mối quan hệ xử lý một số mức độ đột biến, bạn cần phải làm điều này một cách cẩn thận vì SQLAlchemy không biết cách phối hợp giữa các thay đổi trong hai mối quan hệ cùng một lúc, vì vậy xung đột như thế này có thể tiếp tục xảy ra (như chèn kép, v.v.) nếu bạn thực hiện các đột biến tương đương trên cả hai mối quan hệ. Để tự giải quyết vấn đề "xóa", bạn cũng có thể thử đặt Group.users_dynamic thành passive_deletes =True:

class Group(Base):
    __tablename__ = 'groups'
    id = Column(Integer, primary_key=True)

    users = relationship('User', secondary=users_groups, lazy='select', backref='groups')
    users_dynamic = relationship('User', passive_deletes=True, secondary=users_groups, lazy='dynamic')


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. PHP - Xuất bảng MySQL sang tệp JSON

  2. mysqli_stmt ::bind_result ():Số biến ràng buộc không khớp với số trường trong câu lệnh đã chuẩn bị

  3. Sử dụng MySQLi để CHÈN Dữ liệu vào Cơ sở dữ liệu

  4. mysql không đếm hàng hai lần nếu dữ liệu cột bị trùng lặp

  5. Tính toán MySQL Trung bình động?