Advertisement
Guest User

Untitled

a guest
May 17th, 2017
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 4.19 KB | None | 0 0
  1. # Imports
  2. from sqlalchemy import Table, Column, Integer, String, Date, MetaData, \
  3. ForeignKey, create_engine, select, join
  4. from sqlalchemy.ext.declarative import declarative_base
  5. from sqlalchemy.orm import sessionmaker, relation, backref, join
  6. import sqlalchemy.exc
  7. import hashlib
  8.  
  9. # Create and map the table objects using declarative_base method.
  10. Base = declarative_base()
  11.  
  12. class Person(Base):
  13. """
  14. This is the class for people. It defines the Person object as well
  15. as the person table using the sqlalchemy method declarative_base().
  16.  
  17. """
  18. __tablename__ = "person"
  19.  
  20. person_id = Column(Integer, primary_key=True)
  21. last_name = Column(String)
  22. first_name = Column(String)
  23. state_id = Column(String)
  24. agency_id = Column(String)
  25. username = Column(String, unique=True)
  26. password = Column(String)
  27.  
  28.  
  29. def __init__(self, last_name, first_name, state_id,
  30. agency_id, username, password, role_id):
  31. """
  32. Inititialize person attributes.
  33.  
  34. """
  35. self.last_name = last_name
  36. self.first_name = first_name
  37. self.state_id = state_id
  38. self.agency_id = agency_id
  39. self.username = username
  40. self.password = hashlib.sha1(password).hexdigest()
  41. self.role_id = role_id
  42.  
  43. def __repr__(self):
  44. return "<User('%s','%s', '%s', '%s', '%s', '%s', '%s')>" % \
  45. (self.last_name,
  46. self.first_name,
  47. self.state_id,
  48. self.agency_id,
  49. self.username,
  50. self.password,
  51. self.role_id)
  52.  
  53. class DOR(Base):
  54. """
  55. DOR is the class for daily observation reports, end of phase,
  56. and end of training reports.
  57.  
  58. """
  59. __tablename__ = 'dors'
  60.  
  61. report_id = Column(Integer, primary_key=True)
  62. date_observed = Column(Date)
  63. date_completed = Column(Date)
  64. fto = Column(Integer, ForeignKey('person.person_id'))
  65. trainee = Column(Integer, ForeignKey('person.person_id'))
  66. dor_number = Column(Integer)
  67.  
  68. trainee_ = relation(Person, primaryjoin=trainee == Person.person_id)
  69. fto_ = relation(Person, primaryjoin=fto == Person.person_id)
  70.  
  71. def __init__(self, date_observed, date_completed, fto, trainee,
  72. dor_number):
  73. self.date_observed = date_observed
  74. self.date_completed = date_completed
  75. self.fto = fto
  76. self.trainee = trainee
  77. self.dor_number = dor_number
  78.  
  79. def __repr__(self):
  80. return "<User('%s', '%s', '%s', '%s', '%s', '%s')>" % \
  81. (self.report_id,
  82. self.date_observed,
  83. self.date_completed,
  84. self.fto,
  85. self.trainee,
  86. self.dor_number)
  87.  
  88. def getReportList():
  89.  
  90. """
  91.  
  92. Return a list of tuples consisting of the record
  93.  
  94. columns: dor_number, date, lastname, firstname
  95.  
  96.  
  97. """
  98.  
  99. return session.query(DOR.date_observed,
  100. DOR.dor_number,
  101. Person.last_name,
  102. Person.first_name,
  103. Person.state_id).\
  104. select_from(join
  105. (DOR,
  106. Person,
  107. DOR.trainee==
  108. Person.person_id)).all()
  109.  
  110. # Connect to database
  111. engine = create_engine('sqlite:///sample.db', echo=True)
  112.  
  113. # Create the tables, if necessary, and create a new session
  114. print 'Creating any new tables...'
  115. Base.metadata.create_all(engine)
  116.  
  117. print 'Creating session...'
  118.  
  119. Session = sessionmaker(bind=engine)
  120.  
  121. session = Session()
  122.  
  123. result = getReportList()
  124. print
  125. print result
  126.  
  127. """
  128. Result I get:
  129.  
  130. List of tuples like -
  131. (date_observed, dor_number, last_name, first_name, state_id)
  132.  
  133. where the last_name and first_name is from dor.trainee
  134.  
  135. I would like -
  136. (date_observed, dor_number, last_name, first_name, state_id,
  137. last_name, first_name)
  138.  
  139. where the second last_name, first_name is dor.fto
  140.  
  141. """
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement