'Flask SQLAlchemy have changes in parent database show up in child databases

I'm trying to set up my database such that any changes that occur in the parent database also shows up in the children databases as well. I have been looking at cascade and trying different variations but nothing is working.

class users(db.Model):
    swipeNum = db.Column(db.BigInteger, nullable=False)#up to 18 digits safely
    UID = db.Column(db.Integer, primary_key=True, nullable=False)
    directoryID = db.Column(db.String(strlen), nullable=False)
    firstName = db.Column(db.String(strlen), nullable=False)
    lastName = db.Column(db.String(strlen), nullable=False)
    email = db.Column(db.String(strlen), nullable=False)#maybe nullable?
    userType = db.Column(db.Integer, nullable=False, default=0)

    requests = db.relationship('requests', backref='requestor', lazy='dynamic', cascade='all, delete, delete-orphan')

class requests(db.Model):
    requestID = db.Column(db.Integer, primary_key=True, nullable=False, autoincrement=True)
    timestamp = db.Column(db.DateTime, index=True, default=datetime.utcnow)
    reason = db.Column(db.String(strlen), nullable=False)#might need something more robust

    # foreign
    user = db.Column(db.Integer, db.ForeignKey('users.UID'))

And this is my test that I'm running. Only the last assert fails.

# Change UID of user 1234 to 4321
    user = api.db.session.query(models.users).filter_by(UID=1234).first()
    assert user.firstName == "Terrapin"
    user.UID = 4321
    api.db.session.commit()
    api.db.session.close()
    user2 = api.db.session.query(models.users).filter_by(UID=4321).first()
    assert user2.UID == 4321         
    # Get lab permissions for 4321 and assert the same
    user = api.db.session.query(models.requests).filter_by(user=4321).first()
    assert user.user == 4321

Any help would be incredibly appreciated!



Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source