如何使用SQLAlchemy Core定义一对一和多对多关系

如何使用SQLAlchemy Core定义一对一和多对多关系,sqlalchemy,Sqlalchemy,我搜索了文档,但没有找到任何有用的东西。请指引我正确的方向。一对一 将一个表的id用作另一个表的外键和主键 来自 多对一 发件人: 在SQLAlchemy和DDL中,外键约束可以定义为table子句中的附加属性,或者对于单列外键,可以选择在单列定义中指定它们。单列外键更常见,在列级别,通过构造ForeignKey对象作为列对象的参数来指定: 多对多 创建第三个表,其中两个外键引用要在其中创建关系的表 来自 正如您在SQL中所做的那样,定义外键约束和可能的关联表。您的意思是使用sqlalchemy

我搜索了文档,但没有找到任何有用的东西。请指引我正确的方向。

一对一

将一个表的id用作另一个表的外键和主键

来自

多对一

发件人:

在SQLAlchemy和DDL中,外键约束可以定义为table子句中的附加属性,或者对于单列外键,可以选择在单列定义中指定它们。单列外键更常见,在列级别,通过构造ForeignKey对象作为列对象的参数来指定:

多对多

创建第三个表,其中两个外键引用要在其中创建关系的表

来自


正如您在SQL中所做的那样,定义外键约束和可能的关联表。您的意思是使用
sqlalchemy.orm.relationship
对吗?@IljaEverilä您能为我指出正确的方向吗?正如限定名指出的那样,
relationship()
是一个orm概念,用于将对象关系映射到关系关系关系。在关系数据库中,可以使用外键约束(可能还有其他约束)定义关系(表)之间的关系。在SQLAlchemy Core中,您使用
ForeignKey
ForeignKeyConstraint
表示外键约束。是。引用:“SQLAlchemy表达式语言提供了一个使用Python构造表示关系数据库结构和表达式的系统。”换句话说,使用Core,您可以用关系数据库的方式(用Python表示)进行操作。
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),    
)
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))
)
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'))
)