Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found
Select Git revision
  • main
1 result

Target

Select target project
  • soft-core/soft-161-and-162/advanced_orm_relations
  • bgarvin/advanced_orm_relations
2 results
Select Git revision
  • master
1 result
Show changes
Commits on Source (3)
# Mac file finder metadata
.DS_Store
# Windows file metadata
._*
# Thumbnail image caches
Thumbs.db
ethumbs.db
# MS Office temporary file
~*
# Emacs backup file
*~
# Common
bin
# Python files
*.pyc *.pyc
*.pyo *.pyo
__pycache__/
# JetBrains (IntelliJ IDEA, PyCharm, etc) files
.idea/
cmake-build-*/
*.iml
*.iws
*.ipr
venv/
.idea
bin
ER-diagram.png

39.6 KiB

...@@ -52,10 +52,19 @@ class Person(Persisted): ...@@ -52,10 +52,19 @@ class Person(Persisted):
back_populates='reviewers') back_populates='reviewers')
# If we want to be able to access the join table's pairs themselves, we write a standard one-to-many relationship # If we want to be able to access the join table's pairs themselves, we write a standard one-to-many relationship
# with extra information. # with extra information.
reviewerships = relationship('Reviewership', uselist=True, foreign_keys='[Reviewership.reviewer_id]', # (replace the reviewers & reviewees relationships on lines 45-52 with:
back_populates='reviewer') # reviewers = relationship('Person', uselist=True, secondary='reviewerships',
revieweeships = relationship('Reviewership', uselist=True, foreign_keys='[Reviewership.reviewee_id]', # primaryjoin='Reviewership.reviewee_id == Person.person_id',
back_populates='reviewee') # secondaryjoin='Reviewership.reviewer_id == Person.person_id',
# viewonly=True)
# reviewees = relationship('Person', uselist=True, secondary='reviewerships',
# primaryjoin='Reviewership.reviewer_id == Person.person_id',
# secondaryjoin='Reviewership.reviewee_id == Person.person_id',
# viewonly=True)
# reviewerships = relationship('Reviewership', uselist=True, foreign_keys='[Reviewership.reviewer_id]',
# back_populates='reviewer')
# revieweeships = relationship('Reviewership', uselist=True, foreign_keys='[Reviewership.reviewee_id]',
# back_populates='reviewee')
class Reviewership(Persisted): class Reviewership(Persisted):
...@@ -64,10 +73,10 @@ class Reviewership(Persisted): ...@@ -64,10 +73,10 @@ class Reviewership(Persisted):
reviewee_id = Column(Integer, ForeignKey('people.person_id', ondelete='CASCADE'), primary_key=True) reviewee_id = Column(Integer, ForeignKey('people.person_id', ondelete='CASCADE'), primary_key=True)
# If we want to be able to access the related records from a join-table pairs, we write a standard many-to-one # If we want to be able to access the related records from a join-table pairs, we write a standard many-to-one
# relationship with extra information. # relationship with extra information.
reviewer = relationship('Person', foreign_keys='[Reviewership.reviewer_id]', remote_side='[Person.person_id]', # reviewer = relationship('Person', foreign_keys='[Reviewership.reviewer_id]', remote_side='[Person.person_id]',
back_populates='reviewerships') # back_populates='reviewerships')
reviewee = relationship('Person', foreign_keys='[Reviewership.reviewee_id]', remote_side='[Person.person_id]', # reviewee = relationship('Person', foreign_keys='[Reviewership.reviewee_id]', remote_side='[Person.person_id]',
back_populates='revieweeships') # back_populates='revieweeships')
class Database(object): class Database(object):
......
...@@ -19,7 +19,7 @@ def add_starter_data(session): ...@@ -19,7 +19,7 @@ def add_starter_data(session):
def main(): def main():
try: try:
url = Database.construct_mysql_url('localhost', 3306, 'people', 'root', 'cse') url = Database.construct_mysql_url('localhost', 3306, 'people', 'root', '')
database = Database(url) database = Database(url)
database.ensure_tables_exist() database.ensure_tables_exist()
print('Tables created.') print('Tables created.')
......