ThiefMaster
ThiefMaster

Reputation: 318508

SQLAlchemy circular dependency - how to solve it?

I have two tables, News and Files:

# unrelated columns removed
class News(db.Model): 
    id = db.Column(db.Integer, primary_key=True)
    file_id_logo = db.Column(db.Integer, db.ForeignKey('files.id'))
    logo = db.relationship('File', lazy=False)

class File(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    news_id = db.Column(db.Integer, db.ForeignKey('news.id'))
    news = db.relationship('News', lazy=False, backref=db.backref('files'))

After adding the file_id_logo fkey, SQLalchemy raised a CircularDependencyError. I've already tried post_update=True in the logo relation, but it did not change anything.

What's the proper way to solve this?

The following cases are possible (in case it matters):

Upvotes: 17

Views: 8185

Answers (1)

sector119
sector119

Reputation: 896

use_alter – passed to the underlying ForeignKeyConstraint to indicate the constraint should be generated/dropped externally from the CREATE TABLE/ DROP TABLE statement. See that classes’ constructor for details.

https://docs.sqlalchemy.org/en/13/core/constraints.html#sqlalchemy.schema.ForeignKeyConstraint.params.use_alter

Upvotes: 24

Related Questions