【发布时间】:2011-09-28 08:35:27
【问题描述】:
让我们考虑以下用于 python 中的 sqlalchemy 的表模型。
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)
让我们考虑一下对这些表的一些限制。 (请不要质疑这个例子的意义,这是我想出的最好的描述我想学习的东西。:-))
- 一个
worker可能有多个projects可以处理。 -
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')
我做不到的是像上面描述的那样链接表格“评级”。感谢任何帮助。
【问题讨论】:
标签: python database-design model sqlalchemy relationship