I'm trying to create a relationship between my tables seller and item where each seller can sell any number of items but they can't sell the same item twice. Here's what I have:
sells = db.Table('sells', db.Column('seller_email', db.String(), db.ForeignKey('seller.email'), primary_key=True), db.Column('item_id', db.Integer, ForeignKey('item.id'), primary_key=True) ) class Item(db.Model): __tablename__ = 'item' id = db.Column(db.Integer, primary_key=True) coverPhoto = db.Column(db.String()) price = db.Column(db.Integer) condition = db.Column(db.Integer) title = db.Column(db.String()) def __init__(self, title, coverPhoto, price, condition): self.coverPhoto = coverPhoto self.price = price self.condition = condition self.title = title def __repr__(self): return '<id {}>'.format(self.id) class Seller(db.Model): __tablename__ = 'seller' email = db.Column(db.String(), primary_key=True) password = db.Column(db.String()) firstName = db.Column(db.String()) lastName = db.Column(db.String()) location = db.Column(db.String()) def __init__(self, email, password, firstName, lastName, location): self.email = email self.password = password self.firstName = firstName self.lastName = lastName self.location = location def __repr__(self): return "<Seller {email='%s'}>" % (self.email) And I get the following error:
sqlalchemy.exc.ProgrammingError: (psycopg2.ProgrammingError) there is no unique constraint matching given keys for referenced table "seller" [SQL: '\nCREATE TABLE sells (\n\tseller_email VARCHAR NOT NULL, \n\titem_id INTEGER NOT NULL, \n\tPRIMARY KEY (seller_email, item_id), \n\tFOREIGN KEY(item_id) REFERENCES item (id), \n\tFOREIGN KEY(seller_email) REFERENCES seller (email)\n)\n\n'] Bother seller.email and item.id are primary keys so shouldn't they inherently be unique?
sells =part to the end of your script?