Рассмотрим следующие модели таблиц для sqlalchemy в python.
class Worker(Base):
id Column(Integer, primary = True)
name Column(String, nullable = False)
class Project(Base):
id Column(Integer, primary = True)
name Column(String, nullable = False)
class Rating(Base):
id Column(Integer, primary = True)
description Column(String, nullable = False)
Давайте рассмотрим некоторые ограничения для этих таблиц.(Не подвергайте сомнению смысл этого примера, пожалуйста, это лучшее, что я придумал, чтобы описать то, что я хотел бы изучить.: -))
- A
worker
может иметь несколькоprojects
для работы. - A
project
может иметь несколько workers
, назначенных для работы с ним. - Для каждого кортежа
(worker, project)
у вас есть отдельный rating
Я понимаю, что у меня есть отношения три ко многим.Это:
- работник и проект
- работник и рейтинг
- рейтинг и проект
У меня нет проблем с определением многих длямного отношений между двумя таблицами.Мне просто нужно добавить в мои модели следующую ассоциативную таблицу и привязку.
worker_project = Table('worker_project', METADATA,
Column('worker_id', Integer, ForeignKey('workers.id')),
Column('project_id', Integer, ForeignKey('projects.id')),
class Worker(Base):
# [...]
papers = relationship('Project',
secondary=worker_project,
backref='workers')
Что мне не удается, так это связать таблицу «рейтинги», как описано выше. Любая помощь приветствуется.