Guest User

Untitled

a guest
Aug 1st, 2018
216
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.14 KB | None | 0 0
  1. Adding data to related table with SQLAlchemy
  2. class User(db.Model):
  3. id = db.Column(db.Integer, primary_key=True)
  4. username = db.Column(db.String(20), unique=True)
  5. password = db.Column(db.String(30))
  6. email = db.Column(db.String(45), unique=True)
  7. friends = db.relationship('Friend', backref='user',
  8. lazy='dynamic')
  9.  
  10. def __init__(self, username, password, email):
  11. self.username = username
  12. self.password = password
  13. self.email = email
  14.  
  15. def __repr__(self):
  16. return "<User('%s','%s','%s')>" % (self.username, self.email, self.id)
  17.  
  18.  
  19. class Friend(db.Model):
  20. id = db.Column(db.Integer, primary_key=True)
  21. userId = db.Column(db.Integer, db.ForeignKey('user.id'))
  22. friendId = db.Column(db.Integer)
  23. created = db.Column(db.DateTime)
  24.  
  25. def __init__(self, userId, friendId):
  26. self.userId = userId
  27. self.friendId = friendId
  28. self.created = datetime.datetime.now()
  29.  
  30. def __repr__(self):
  31. return "<Friend(%i,%i)>" % (self.userId, self.friendId)
  32.  
  33. MyUser = bpdata.User.query.filter_by(id=1).first()
  34.  
  35. MyFriend = bpdata.User.query.filter_by(id=2).first()
  36.  
  37. MyUser.Friends.Append(MyFriend)
  38.  
  39. MyUser.friends.append(Friend(MyUser.id, MyFriend.id))
  40.  
  41. association_table = db.Table('association',
  42. db.Column('user_id', db.Integer, db.ForeignKey('user.id')),
  43. db.Column('friend_id', db.Integer, db.ForeignKey('user.id'))
  44. )
  45. class User(db.Model):
  46. id = db.Column(db.Integer, primary_key=True)
  47. username = db.Column(db.String(20), unique=True)
  48. password = db.Column(db.String(30))
  49. email = db.Column(db.String(45), unique=True)
  50. friends = db.relationship("User",
  51. secondary=association_table,
  52. backref='added_by',
  53. primaryjoin=id == association_table.c.user_id,
  54. secondaryjoin=id == association_table.c.friend_id)
  55.  
  56. >>> user1 = User.query.filter_by(id=1).first()
  57. >>> user1.friends
  58. []
  59. >>> user2 = User.query.filter_by(id=2).first()
  60. >>> user1.friends.append(user2)
  61. >>> user1.friends
  62. [<User('user1','user1@admin.com','2')>]
  63. >>> user1.friends[0].added_by
  64. [<User('admin','admin@admin.com','1')>]
Add Comment
Please, Sign In to add comment