Guest User

Untitled

a guest
Dec 11th, 2017
365
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.99 KB | None | 0 0
  1. # 1. Run this SQL JOIN:
  2. #
  3. # SELECT user.name, address.email_address FROM user
  4. # JOIN address ON user.id=address.user_id WHERE
  5. # address.email_address='j25@yahoo.com'
  6. #
  7. # 2. Tricky Bonus! Select all pairs of distinct user names.
  8. # Hint: "... ON user_alias1.name < user_alias2.name"
  9. #
  10. from sqlalchemy import and_, or_
  11. from sqlalchemy import Table, Column, MetaData
  12. from sqlalchemy import Integer, String, DateTime
  13. from sqlalchemy import create_engine
  14. from sqlalchemy import ForeignKey
  15.  
  16. from sqlalchemy.orm import relationship
  17. from sqlalchemy.orm import Session
  18. from sqlalchemy.ext.declarative import declarative_base
  19. Base = declarative_base()
  20.  
  21. class User(Base):
  22. __tablename__ = 'user'
  23.  
  24. user_id = Column(Integer, primary_key=True)
  25. name = Column(String(100), nullable=False)
  26. fullname = Column(String(100), nullable=False)
  27.  
  28. def __repr__(self):
  29. return "<User(%r, %r, %r)>" % (
  30. self.user_id, self.name, self.fullname
  31. )
  32.  
  33. class Address(Base):
  34. __tablename__ = 'address'
  35.  
  36. id = Column(Integer, primary_key=True)
  37. email_address = Column(String, nullable=False)
  38. user_id = Column(Integer, ForeignKey('user.id'))
  39.  
  40. user = relationship("User", backref="addresses")
  41.  
  42. def __repr__(self):
  43. return "<Address(%r,%r)>" % self.id, self.email_address
  44.  
  45. e =create_engine("sqlite://")
  46. Base.metadata.create_all(e)
  47. s = Session(bind=e)
  48.  
  49. s.add_all([
  50. User(name='wendy', fullname='Wendy Weathersmith'),
  51. User(name='mary', fullname='Mary Contrary'),
  52. User(name='fred', fullname='Fred Flinstone')
  53. ])
  54.  
  55. jack = User(name='jack', fullname='Jack Bean')
  56. jack.addresses
  57.  
  58. jack.addresses = [
  59. Address(email_address='jack@gmail.com'),
  60. Address(email_address='j25@yahoo.com'),
  61. Address(email_address='jack@hotmail.com'),
  62. ]
  63.  
  64.  
  65. s.commit()
  66.  
  67. query = ession.query(User.name).join(Address.email_address).\
  68. filter(Address.email_address == 'j25@yahoo.com').all()
  69.  
  70. print(query.all())
  71. #Ответ
  72. [('jack', 'j25@yahoo.com')]
Add Comment
Please, Sign In to add comment