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

Cách nhanh nhất để chèn đối tượng nếu nó không tồn tại với SQLAlchemy

Nếu bất kỳ đối tượng nào như vậy là duy nhất dựa trên sự kết hợp của các cột, bạn cần đánh dấu chúng là khóa chính tổng hợp. Thêm primary_key=True tham số từ khóa cho từng cột này, làm giảm id của bạn toàn bộ cột:

class Showing(Base):
    __tablename__   = "showings"

    time            = Column(DateTime, primary_key=True)
    link            = Column(String)
    film_id         = Column(Integer, ForeignKey('films.id'), primary_key=True)
    cinema_id       = Column(Integer, ForeignKey('cinemas.id'), primary_key=True)

Bằng cách đó, cơ sở dữ liệu của bạn có thể xử lý các hàng này hiệu quả hơn (không cần cột tăng dần) và SQLAlchemy hiện tự động biết nếu hai trường hợp của Showing đều giống nhau.

Tôi tin sau đó bạn có thể hợp nhất Showing mới của mình quay lại phiên:

def AddShowings(self, showing_times, cinema, film):
    for showing_time in showing_times:
        self.session.merge(
            Showing(time=showing_time[0], link=showing_time[1],
                    film=film, cinema=cinema)
        )



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Làm cách nào để bỏ qua một tham số trong một truy vấn mysqli đã chuẩn bị sẵn trong PHP?

  2. Cột autoincrement của MySQL nhảy 10 - tại sao?

  3. mysqli_connect ():(HY000 / 2002):Không thể kết nối với máy chủ MySQL cục bộ thông qua socket

  4. Lệnh MySQL:Cheat Sheet của các truy vấn MySQL phổ biến

  5. VARCHAR làm khóa ngoại / khóa chính trong cơ sở dữ liệu tốt hay xấu?