Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- Adding data to related table with SQLAlchemy
- class User(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- username = db.Column(db.String(20), unique=True)
- password = db.Column(db.String(30))
- email = db.Column(db.String(45), unique=True)
- friends = db.relationship('Friend', backref='user',
- lazy='dynamic')
- def __init__(self, username, password, email):
- self.username = username
- self.password = password
- self.email = email
- def __repr__(self):
- return "<User('%s','%s','%s')>" % (self.username, self.email, self.id)
- class Friend(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- userId = db.Column(db.Integer, db.ForeignKey('user.id'))
- friendId = db.Column(db.Integer)
- created = db.Column(db.DateTime)
- def __init__(self, userId, friendId):
- self.userId = userId
- self.friendId = friendId
- self.created = datetime.datetime.now()
- def __repr__(self):
- return "<Friend(%i,%i)>" % (self.userId, self.friendId)
- MyUser = bpdata.User.query.filter_by(id=1).first()
- MyFriend = bpdata.User.query.filter_by(id=2).first()
- MyUser.Friends.Append(MyFriend)
- MyUser.friends.append(Friend(MyUser.id, MyFriend.id))
- association_table = db.Table('association',
- db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
- db.Column('friend_id', db.Integer, db.ForeignKey('user.id'))
- )
- class User(db.Model):
- id = db.Column(db.Integer, primary_key=True)
- username = db.Column(db.String(20), unique=True)
- password = db.Column(db.String(30))
- email = db.Column(db.String(45), unique=True)
- friends = db.relationship("User",
- secondary=association_table,
- backref='added_by',
- primaryjoin=id == association_table.c.user_id,
- secondaryjoin=id == association_table.c.friend_id)
- >>> user1 = User.query.filter_by(id=1).first()
- >>> user1.friends
- []
- >>> user2 = User.query.filter_by(id=2).first()
- >>> user1.friends.append(user2)
- >>> user1.friends
- [<User('user1','user1@admin.com','2')>]
- >>> user1.friends[0].added_by
- [<User('admin','admin@admin.com','1')>]
Add Comment
Please, Sign In to add comment