'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 |
|---|
