python - Dependency rule tried to blank-out primary key column in SQL-Alchemy when trying to delete record -
i have many 1 relationship between userownedshare
table , share
table.
when delete userownedshare
entry database following error: assertionerror: dependency rule tried blank-out primary key column 'share.ticker'
this makes sense ticker
field in userownedshare foreign key in share
table. cannot work out how fix error. think want set cascading deletion when share
entry orphaned cannot work out how this, have read documentation end different types of errors think missing trivial. hope can help, thanks!
here code:
class userownedshare(db.model): id = db.column(db.integer, primary_key=true) ticker = db.column(db.string(20), db.foreignkey('share.ticker')) user = db.column(db.string, db.foreignkey('user.username')) quantity = db.column(db.integer, nullable=false) dividends = db.column(db.float, server_default="0.0") triggerlevel = db.column(db.integer) smsalert = db.column(db.boolean) emailalert = db.column(db.boolean) portfolioid = db.column(db.string(50)) name = db.relationship('share', backref='userownedshare' , foreign_keys=[ticker]) class share(db.model): id = db.column(db.integer) name = db.column(db.string(50), nullable=false) ticker = db.column(db.string(50), db.foreignkey('userownedshare.ticker'), primary_key=true) tickermatch = db.relationship('userownedshare', backref='share', foreign_keys=[ticker])
ok, after trial , error worked out. needed add cascade="all, delete-orphan",
tickermatch
relationship in share
class.
but needed add lazy="joined"
name
relationship in userownedshare
class
class userownedshare(db.model): id = db.column(db.integer, primary_key=true) ticker = db.column(db.string(20), db.foreignkey('share.ticker')) user = db.column(db.string, db.foreignkey('user.username')) quantity = db.column(db.integer, nullable=false) dividends = db.column(db.float, server_default="0.0") triggerlevel = db.column(db.integer) smsalert = db.column(db.boolean) emailalert = db.column(db.boolean) portfolioid = db.column(db.string(50)) name = db.relationship('share', backref='userownedshare', foreign_keys=[ticker], lazy="joined") class share(db.model): id = db.column(db.integer) name = db.column(db.string(50), nullable=false) ticker = db.column(db.string(50), db.foreignkey('userownedshare.ticker'), primary_key=true) tickermatch = db.relationship('userownedshare', backref='share', cascade="all, delete-orphan", lazy="joined")
Comments
Post a Comment