2016-04-04 3 views
1

Ich arbeite in SQLAlchemy. Ist es möglich, equality von zwei Zeilen zu setzen, also wenn die Zeile eingefügt wird und es bereits eine Zeile mit den gleichen 2 Spalten gibt, sagen wir "creation_date" und "destination_from", dann wird die zweite Zeile nicht eingefügt?Wie überprüft man das Einfügen von Zeilen auf Duplizität basierend auf mehreren Attributen?

Ich möchte keine PRIMARY KEY für diese Spalten erstellen.

Ich nehme an, dass das manuelle Überprüfen, ob es bereits eine Zeile mit diesen Spalten gibt, nicht effizient ist.

# -*- coding: utf-8 -*- 
from sqlalchemy import create_engine, ForeignKey 
from sqlalchemy import Column 
import sqlalchemy 
from sqlalchemy.ext.declarative import declarative_base 
import datetime 

engine = create_engine('sqlite:///db.db', echo=False) 
Base = declarative_base() 

s = sqlalchemy.orm.Session(engine) 

class Flight(Base): 
    __tablename__ = 'flights' 
    id = Column(sqlalchemy.Integer, primary_key=True) 
    destination_from = Column(sqlalchemy.String) 
    destination_to = Column(sqlalchemy.String) 
    creation_date = Column(sqlalchemy.Date) 
    start_date = Column(sqlalchemy.Date) 
    return_date = Column(sqlalchemy.Date) 
    price = Column(sqlalchemy.Float) 


Base.metadata.create_all(engine) 

def insert_into_flights(**kwargs): 
    s.add(Flight(**kwargs)) 
    s.commit() 

Antwort

2

Sie wollen nicht einen Primärschlüssel erstellen, aber können Sie keine UNIQUE CONSTRAINT erstellen?

UniqueConstraint('creation_date', 'destination_from') 
Verwandte Themen