我搜索了文档,但没有找到任何有用的内容。请指导我正确的方向。
答案 0 :(得分:1)
一对一
将一个表的ID用作另一个表的外键和主键。
来自overiq
的示例employees = Table('employees', metadata,
Column('employee_id', Integer(), primary_key=True),
Column('first_name', String(200), nullable=False),
Column('last_name', String(200), nullable=False),
Column('dob', DateTime(), nullable=False),
Column('designation', String(200), nullable=False),
)
employee_details = Table('employee_details', metadata,
Column('employee_id', ForeignKey('employees.employee_id'), primary_key=True, ),
Column('ssn', String(200), nullable=False),
Column('salary', String(200), nullable=False),
Column('blood_group', String(200), nullable=False),
Column('residential_address', String(200), nullable=False),
)
多对一
来自SQL Alchemy's official docs:
在SQLAlchemy和DDL中,可以将外键约束定义为table子句中的其他属性,或者对于单列外键,可以选择在单个列的定义中指定外键约束。单列外键更为常见,并且在列级别通过构造ForeignKey对象作为Column对象的参数来指定:
user_preference = Table('user_preference', metadata,
Column('pref_id', Integer, primary_key=True),
Column('user_id', Integer, ForeignKey("user.user_id"), nullable=False),
Column('pref_name', String(40), nullable=False),
Column('pref_value', String(100))
)
多对多
使用两个外键创建第三个表,这些外键引用要在其之间创建关系的表
来自overiq
的示例posts = Table('posts', metadata,
Column('id', Integer(), primary_key=True),
Column('post_title', String(200), nullable=False),
Column('post_slug', String(200), nullable=False),
Column('content', Text(), nullable=False),
)
tags = Table('tags', metadata,
Column('id', Integer(), primary_key=True),
Column('tag', String(200), nullable=False),
Column('tag_slug', String(200), nullable=False),
)
post_tags = Table('post_tags', metadata,
Column('post_id', ForeignKey('posts.id')),
Column('tag_id', ForeignKey('tags.id'))
)